一、簡介
Kubernetes 支持多個虛擬集羣,它們底層依賴於同一個物理集羣。這些虛擬集羣被稱爲命名空間。node
二、如何使用命名空間
命名空間適用於存在不少跨多個團隊或項目的用戶的場景。對於只有幾到幾十個用戶的集羣,根本不須要建立或考慮命名空間。當須要名稱空間提供的功能時,請開始使用它們。nginx
命名空間爲名稱提供了一個範圍。資源的名稱須要在命名空間內是惟一的,但不能跨命名空間。命名空間不能相互嵌套,每一個 Kubernetes 資源只能在一個命名空間中。web
命名空間是在多個用戶之間劃分集羣資源的一種方法(經過資源配額)。shell
在 Kubernetes 將來版本中,相同命名空間中的對象默認將具備相同的訪問控制策略。centos
不須要使用多個命名空間來分隔輕微不一樣的資源,例如同一軟件的不一樣版本:使用 labels 來區分同一命名空間中的不一樣資源。api
三、列出集羣中的當前名稱空間
[root@k8s-001 k8s]# kubectl get namespaces
NAME STATUS AGE
default Active 8h
kube-node-lease Active 8h
kube-public Active 8h
kube-system Active 8h
四、Kubernetes三個初始名稱空間
default
沒有其餘名稱空間的對象的默認名稱空間。微信kube-system
Kubernetes系統建立的對象的名稱空間。appkube-public
該名稱空間是自動建立的,而且對全部用戶(包括未經身份驗證的用戶)可讀。此名稱空間主要保留給集羣使用,以防某些資源在整個集羣中公開可見。此名稱空間的公共方面僅是約定,不是要求。運維
五、獲取默認名稱空間的信息
[root@k8s-001 k8s]# kubectl get namespaces default
NAME STATUS AGE
default Active 3h53m
# 或者使用
[root@k8s-001 k8s]# kubectl describe namespaces default
Name: default
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No LimitRange resource.
六、建立Namespace
[root@k8s-001 k8s]# cat name-server.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ywm
labels:
name: ywm
[root@k8s-001 k8s]# kubectl apply -f name-server.yaml
namespace/ywm created
[root@k8s-001 k8s]# kubectl get namespaces
ywm Active 3m22s
七、在指定名稱空間上部署應用
[root@k8s-001 k8s]# kubectl create deployment --image nginx demo-nginx --namespace=ywm
deployment.apps/demo-nginx created
[root@k8s-001 k8s]# kubectl describe deployment demo-nginx --namespace=ywm |grep Namespace
Namespace: ywm
八、設置Context選擇命名空間
1.默認命名空間
[root@k8s-001 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin
# 上圖說明咱們使用了一個名爲Default的context,context沒有指定命名空間,所以使用了默認命名空間
2.想要將該context使用的命名空間修改爲ywm,咱們輸入
[root@k8s-001 ~]# kubectl config set-context $(kubectl config current-context) --namespace=ywm
Context "kubernetes-admin@kubernetes"modified.
3.查看context配置來驗證當前是否選擇了ywm
[root@k8s-001 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin ywm
4.驗證咱們的kubectl describe命令如今默認使用demo-namespace,它會請求咱們的demo-nginx部署而不須要指定命名空間
[root@k8s-001 ~]# kubectl describe deployment demo-nginx|grep Namespace
Namespace: ywm
九、刪除命名空間並清理
刪除命名空間這一功能很是強大,由於它不只刪除命名空間,還會清理其中部署了的全部資源。這一功能很是方便,可是同時若是你一不當心,也會很是危險ide
1.在刪除以前,最好列出和命名空間相關的資源,肯定想要刪除的對象
[root@k8s-001 ~]# kubectl get all --namespace=ywm
NAME READY STATUS RESTARTS AGE
pod/demo-nginx-5595f574b7-dg5gq 1/1 Running 0 88m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-service NodePort 10.96.90.242 <none> 80:32601/TCP 121m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/demo-nginx 1/1 1 1 88m
NAME DESIRED CURRENT READY AGE
replicaset.apps/demo-nginx-5595f574b7 1 1 1 88m
2.一旦肯定了要操做的範圍,能夠輸入下面的命令刪除demo-namespace命名空間和其中的全部資源
[root@k8s-001 ~]# kubectl delete namespace ywm
namespace "ywm"deleted
3.命名空間及其資源將從集羣中刪除
[root@k8s-001 ~]# kubectl get namespace
NAME STATUS AGE
default Active 6h14m
kube-node-lease Active 6h14m
kube-public Active 6h14m
kube-system Active 6h14m
kubernetes-dashboard Active 5h57m
十、初始化命名空間
1.若是你以前在kubectl上下文中更改了所選的命名空間,那麼輸入下面的命令清除所選的命名空間
[root@k8s-001 ~]# kubectl config set-context $(kubectl config current-context) --namespace=
Context "kubernetes-admin@kubernetes"modified.
2.在清理demo資源時,請記住刪除咱們最初提供給默認命名空間的原始demo-nginx部署
[root@k8s-001 ~]# kubectl delete deployment demo-nginx
Error from server (NotFound): deployments.apps "demo-nginx"not found
[root@k8s-001 ~]# kubectl get deployment
No resources found indefault namespace.
如今你的集羣應該處於一開始的狀態了
掃描二維碼
獲取更多精彩
運維貓公衆號
有須要技術交流的小夥伴能夠加我微信,期待與你們共同成長,本人微信:
掃描二維碼
添加私人微信
運維貓博主
掃碼加微信
最近有一些星友諮詢我知識星球的事,我也想繼續在星球上發佈更優質的內容供你們學習和探討。運維貓公衆號平臺致力於爲你們提供免費的學習資源,知識星球主要致力於即將入坑或者已經入坑的運維行業的小夥伴。
點擊閱讀原文 查看更多精彩內容!!!
本文分享自微信公衆號 - 運維貓(centos15)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。