K8s 命名空間(Namespace)概念
Kubernetes(K8s)中的命名空間是用于在集群內對資源進行邏輯隔離的機制,通過劃分不同的命名空間,可以將集群資源(如 Pod、Service、Deployment 等)分配到不同的虛擬 “工作區”,實現多團隊、多項目或多環境的資源隔離與管理。
核心作用
- 資源隔離:不同命名空間的資源名稱可以重復,避免命名沖突(同一命名空間內資源名稱必須唯一)。
- 權限控制:可通過 RBAC(基于角色的訪問控制)為不同命名空間分配獨立的權限策略,限制用戶或團隊對資源的操作范圍。
- 資源配額管理:可為每個命名空間設置資源配額(如 CPU、內存上限),防止單個項目過度占用集群資源。
默認命名空間
K8s 集群初始化時會創建 4 個默認命名空間:
default
:未定命名空間的資源默認存放于此。kube-system
:存放 K8s 系統組件(如 kube-proxy、etcd 等)的資源。kube-public
:所有用戶可訪問的公共資源(通常用于存儲集群級公開信息)。kube-node-lease
:用于節點心跳檢測的租約資源。
常用操作
- 創建命名空間:
kubectl create namespace <命名空間名稱>
- 查看命名空間:
kubectl get namespaces
?或?kubectl get ns
- 在指定命名空間操作資源:
kubectl get pods -n <命名空間名稱>
- 刪除命名空間:
kubectl delete namespace <命名空間名稱>
(會刪除該命名空間下所有資源)
適用場景
- 多團隊共享集群時,為每個團隊分配獨立命名空間。
- 區分開發、測試、生產等不同環境的資源。
- 隔離不同項目的資源,便于管理和審計。
命名空間僅提供邏輯隔離,而非網絡隔離或安全隔離(需結合網絡策略、RBAC 等實現更嚴格的隔離)。