為什么要使用命名空間
- 多個用戶共享集群:命名空間為集群中的資源提供了邏輯隔離。不同的命名空間中的資源名稱可以相同,但實際上它們是完全不同的資源實例。
- 環境隔離:可以為開發、測試和生產環境創建不同的命名空間,確保它們之間不會相互干擾。
- 額外的資源配額控制:可以為命名空間設置資源配額,限制其內部資源的使用量。
默認命名空間
當創建一(yi)個資源(例(li)如 Pod 或 Service)而不(bu)指(zhi)定其命(ming)名(ming)空間(jian)時(shi),該資源會被放在(zai)默認命(ming)名(ming)空間(jian)(default)中。
查看命名空間
你可以使用 kubectl get namespaces 命令來查(cha)看集群中所有的命名空間。
kubectl get namespaces
創建命名空間
你可以使用 YAML 文件來定義一個命名空間,并使用 kubectl create 命令來創建它(ta)。
例如,創建一個名為 my-namespace 的(de)命名空間的(de) YAML 文件如(ru)下:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
然后,使用以下命令創建命名空間:
kubectl create -f namespace.yaml
使用命名空間
在創建資源時,你可以通過 --namespace 標志或簡寫 -n 來指(zhi)定(ding)命名空(kong)間。
例如,在 my-namespace 命(ming)名空間(jian)中創建(jian)一(yi)個 Pod:
kubectl run my-pod --image=nginx -n my-namespace
刪除命名空間
要刪除一個命名空間及其內部的所有資源,可以使用 kubectl delete 命令。
kubectl delete namespace my-namespace
注意事項
- 一些 Kubernetes 系統組件(如 kube-system 命名空間中的組件)在特定的命名空間中運行,并且不應該被移動或刪除。
- 命名空間本身也是 Kubernetes 集群資源的一部分,并且遵循與 Pod、Service 等相同的 API 原則和模式。
總結
命名空(kong)間是 Kubernetes 中一(yi)個強大的(de)(de)概念,它允許你將集群資源劃分為不同(tong)的(de)(de)、相(xiang)互(hu)隔(ge)離(li)的(de)(de)組。通(tong)過使用命名空(kong)間,你可以更好地(di)組織和管理你的(de)(de) Kubernetes 資源,確保它們在不同(tong)的(de)(de)環境或(huo)項目之間保持清晰(xi)和隔(ge)離(li)。