Index
從異世界歸來的第二二天 - Kubernetes Resources(二) - Namespace¶
概述¶
在昨天的介紹中我們藉由 Request/Limit 當作我們了解 Kubernetes 資源配置的一塊入門磚,今天我們將做一些實戰操作模擬工作中團隊開發的實際情況,首先我們需要介紹 Kubernetes 為我們提供的一種集群中資源劃分並互相隔離的 Group - Namespaces ,並且在 Namespace 的下設置我們的資源配置。
Namespace 是什麼以及何時使用?¶

Kubernetes 提供了抽象的 Cluster (virtual cluster)的概念,讓我們能根據專案不同、執行團隊不同,或是商業考量,將原本擁有實體資源的單一 Kubernetes Cluster ,劃分成幾個不同的抽象的 Cluster (virtual cluster),也就是 Namespace。
所以他適用於存在很多跨團隊或者是項目的場景,對於只有少數幾個到十幾個使用者的集群,或許根本不需要創建或使用 Namespace 。套用一句知名前端框架 Vue 對 Vuex 下的一句精闢見解:『就像眼鏡一樣,你總會在需要他的時候想起他』。
查看Namespace¶
kubectl get namespace
--------
NAME STATUS AGE
default Active 36h
kube-node-lease Active 36h
kube-public Active 36h
kube-system Active 36h
kubernetes-dashboard Active 36h
Kubernetes 會創建四個初始名字空間:
default沒有指明使用其它名字空間的對象所使用的默認名字空間kube-system:Kubernetes 系統創建對象所使用的名字空間kube-public:這個名字空間是自動創建的,所有用戶(包括未經過身份驗證的用戶)都可以讀取它。這個名字空間主要用於集群使用,以防某些資源在整個集群中應該是可見和可讀的。這個名字空間的公共方面只是一種約定,而不是要求。kube-node-lease:該命名空間含有與每個節點關聯的Lease 對象。節點租用允許kubelet 發送heartbeat(心跳),以便控制平面能檢測節點故障。
建立 Namespace¶
kubectl create namespace demo-namespace
---------
namespace/demo-namespace creatednamespace
kubectl get namespace
---------
NAME STATUS AGE
default Active 37h
demo-namespace Active 7s
kube-node-lease Active 37h
kube-public Active 37h
kube-system Active 37h
kubernetes-dashboard Active 36h
在請求中設置Namespace¶
要為當前請求設置名字空間,請使用 --namespace 參數。
例如:
kubectl run nginx --image=nginx --namespace=demo-namespace
kubectl get pods --namespace=demo-namespace
設置預設 Namespace¶
在我們日常的 kubectl 指令中,使用資源的預設 Namespace 都是 default ,如果想要取得其他 Namespace 資源需要使用 —namespace=<namespace> 參數,我們還有另一個選擇就是修改預設的Namespace,以用於對應上下文中所有後續 kubectl 指令。
kubectl config set-context --current --namespace=demo-namespace
*# 驗證*
kubectl config view --minify | grep namespace:
為 Pod 指定 Namespace¶
在我們纂寫 Pod 的設定檔中可以在 [kubernetes.io/metadata.namespace](http://kubernetes.io/metadata.name) 欄位指定要其運行在哪一個 Namespace 中,如果沒有特別設定將會視預設值而定。
...
kind: pod
metatdata:
namespace: <ns-name>
name: <pod-name>
一些 Namespace 的特性¶
- 同一個
Namespace的資源名稱是唯一性。 - 不同
Namespace的資源名稱可以相同。 Namespacedelete 掉,裡面的 resources 也跟著刪除。- 可透過
ResourceQuotaLimitRange分配/限制系統的資源。
相關程式碼同時收錄在:
https://github.com/MikeHsu0618/2022-ithelp/tree/master/Day22
Reference