參考文檔https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/
命名空間
Kubernetes 支持多個虛擬集群,它們底層依賴于同一個物理集群菱农。 這些虛擬集群被稱為命名空間顷帖。
何時使用多個命名空間
命名空間適用于存在很多跨多個團(tuán)隊(duì)或項(xiàng)目的用戶的場景立美。對于只有幾到幾十個用戶的集群啤誊,根本不需要創(chuàng)建或考慮命名空間饺窿。當(dāng)需要名稱空間提供的功能時鲫咽,請開始使用它們姨伤。
命名空間為名稱提供了一個范圍。資源的名稱需要在命名空間內(nèi)是唯一的贩幻,但不能跨命名空間轿腺。命名空間不能相互嵌套,每個 Kubernetes 資源只能在一個命名空間中丛楚。
命名空間是在多個用戶之間劃分集群資源的一種方法(通過資源配額)族壳。
在 Kubernetes 未來版本中,相同命名空間中的對象默認(rèn)將具有相同的訪問控制策略趣些。
不需要使用多個命名空間來分隔輕微不同的資源仿荆,例如同一軟件的不同版本:使用 labels來區(qū)分同一命名空間中的不同資源。
查看命名空間
[root@master-11 ~]# kubectl get ns
NAME STATUS AGE
default Active 43h
kube-public Active 43h
kube-system Active 43h
Kubernetes 會創(chuàng)建三個初始命名空間:
default
沒有指明使用其它命名空間的對象所使用的默認(rèn)命名空間
kube-system Kubernetes
系統(tǒng)創(chuàng)建對象所使用的命名空間
kube-public
這個命名空間是自動創(chuàng)建的坏平,所有用戶(包括未經(jīng)過身份驗(yàn)證的用戶)都可以讀取它拢操。這個命名空間主要用于集群使用,以防某些資源在整個集群中應(yīng)該是可見和可讀的舶替。這個命名空間的公共方面只是一種約定令境,而不是要求。
并非所有對象都在命名空間中
大多數(shù) kubernetes 資源(例如 Pod坎穿、Service展父、副本控制器等)都位于某些命名空間中。但是命名空間資源本身并不在命名空間中玲昧。而且底層資源,例如 nodes和持久化卷不屬于任何命名空間篮绿。
可以使用下面命令查看哪些 Kubernetes 資源在命名空間中孵延,哪些不在命名空間中:
kubectl api-resources --namespaced=true ##查看哪些資源在命令空間
kubectl api-resources --namespaced=false ##查看哪些資源不在命令空間
可以在查看資源的時候加上指定的命名空間
kubectl get pods -n kube-system ##查看kube-system命令空間的pod
創(chuàng)建命名空間
kubectl create ns test ##創(chuàng)建一個叫test的命名空間
切換命令空間
kubectl config set-context --current --namespace=kube-system ##切換至kube-system的命名空間