003.kubernets對於namespace的管理


一 Kuberbetes的架構簡單介紹

1.1 雲計算的傳統分類

1.2 kubernetes基礎架構

 

工作機制

  • 用戶通過kubectl向api-server提交需要運行的pod描述
  • api-server接收請求並將相關描述存儲到etcd
  • scheduler 監控api-server拿到相關描述信息,開始掃描node節點,找到滿足條件的node節點,將Pod與node的對應關系寫入etcd
  • Kubelet定時請求api-server,拿到需要在本機運行的Pod信息,運行起來
  • 用戶提交RC描述,rc控制器監視集群中的容器並保持數量
  • 用戶提交service描述,由kube-proxy負責具體的工作流量轉發

1.3 創建一個容器的步驟

  1. 鏡像從哪里獲取以及版本號
  2. 鏡像倉庫是否需要認證,如果需要,請提供認證密鑰
  3. 容器如果掛掉了,是否需要重啟
  4. 容器是否需要掛載持久存儲
  5. 是否為容器指定自己的dns
  6. 是否指定容器運行的節點
  7. 是否需要傳遞環境變量
  8. 容器啟動之后,是否需要執行某些操作
  9. 容器在銷毀時,是否需要執行某些操作
  10. 在什么情況下,我們認為容器是存活的
  11. 在什么情況下,我們認為容器是可以提供服務的
  12. 在容器啟動之前,是否還需要做一些准備工作

在前面已經安裝完成一個kubernetes的集群

[root@docker-server1 ~]# kubectl get nodes

NAME              STATUS   ROLES    AGE    VERSION
192.168.132.131   Ready    master   105m   v1.17.0
192.168.132.132   Ready    <none>   92m    v1.17.0
192.168.132.133   Ready    <none>   90m    v1.17.0

[root@docker-server1 ~]# kubectl get pods -n kube-system      

NAME                                      READY   STATUS    RESTARTS   AGE
coredns-6955765f44-8kxdg                  1/1     Running   0          108m
coredns-6955765f44-m66bw                  1/1     Running   0          108m
etcd-192.168.132.131                      1/1     Running   0          108m
kube-apiserver-192.168.132.131            1/1     Running   0          108m
kube-controller-manager-192.168.132.131   1/1     Running   0          108m
kube-flannel-ds-amd64-dbckr               1/1     Running   0          95m
kube-flannel-ds-amd64-fg972               1/1     Running   0          93m
kube-flannel-ds-amd64-m9lgq               1/1     Running   0          104m
kube-proxy-7xgt9                          1/1     Running   0          95m
kube-proxy-k8kb7                          1/1     Running   0          93m
kube-proxy-q867d                          1/1     Running   0          108m
kube-scheduler-192.168.132.131            1/1     Running   0          108m

 kubectl 主要管理集群中的資源對象,容器也是資源

1.4 常用資源介紹

Node
Namespace
Container
Pod
Label
Annotations
ReplicaController
ReplicaSet
Deployment
HPA
Service
Job

資源對象:分為集群級別資源(node,pv,clusterrole)和命名空間級別資源(pods)

node:節點,node不屬於任何命名空間,是集群資源

二 namespace的簡單操作

集群安裝的時候會自動幫助我們創建幾個namesapce,查看namespace

2.1 查看

[root@docker-server1 ~]# kubectl get ns

NAME                   STATUS   AGE
default                Active   137m
kube-node-lease        Active   137m
kube-public            Active   137m
kube-system            Active   137m
kubernetes-dashboard   Active   82m

kubectl get pods -n kube-system 這個操作就是查看kube-system 這個命名空間所有的容器

當我們執行kubectl get pods,不指定命名空間的話 ,就去查詢default這個默認的命名空間,但是沒任何容器運行

[root@docker-server1 ~]# kubectl get pods

No resources found in default namespace.

2.3 創建一個命名空間

[root@docker-server1 ~]# kubectl create ns projecta

也可以通過提交資源描述文件進行創建

[root@docker-server1 ~]# kubectl get ns

NAME                   STATUS   AGE
default                Active   171m
kube-node-lease        Active   171m
kube-public            Active   171m
kube-system            Active   171m
kubernetes-dashboard   Active   116m
projecta               Active   6s

2.3  刪除namespace

[root@docker-server1 ~]# kubectl delete ns projecta

[root@docker-server1 ~]# kubectl get ns

NAME                   STATUS   AGE
default                Active   173m
kube-node-lease        Active   173m
kube-public            Active   173m
kube-system            Active   173m
kubernetes-dashboard   Active   117m

命名空間的命名規范

[root@docker-server1 ~]# kubectl create ns Projecta

The Namespace "Projecta" is invalid: metadata.name: Invalid value: "Projecta": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')

從這里就可以看到規則

2.4 資源描述文件操作namespace

[root@docker-server1 ~]# mkdir -p /yamls/namespace

[root@docker-server1 ~]# cd /yamls/namespace

[root@docker-server1 namespace]# vim projectb.yaml

apiVersion: v1       #API版本
kind: Namespace      #資源類型
metadata:     
  name: projectb     #命名空間名稱

[root@docker-server1 namespace]# kubectl apply -f projectb.yaml

[root@docker-server1 namespace]# kubectl get ns

NAME                   STATUS   AGE
default                Active   3h18m
kube-node-lease        Active   3h18m
kube-public            Active   3h18m
kube-system            Active   3h18m
kubernetes-dashboard   Active   142m
projectb               Active   19s

刪除命名空間

[root@docker-server1 namespace]# kubectl delete -f projectb.yaml

[root@docker-server1 namespace]# kubectl get ns

NAME                   STATUS   AGE
default                Active   3h18m
kube-node-lease        Active   3h18m
kube-public            Active   3h18m
kube-system            Active   3h18m
kubernetes-dashboard   Active   142m

 

命名空間簡單介紹到這里


博主聲明:本文的內容來源主要來自譽天教育晏威老師,由本人實驗完成操作驗證,需要的博友請聯系譽天教育(http://www.yutianedu.com/),獲得官方同意或者晏老師(https://www.cnblogs.com/breezey/)本人同意即可轉載,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM