在一個Kubernetes中可以使用namespace創建多個"虛擬集群",這些namespace之間可以完全隔離,也可以透過設定讓一個namespace中的service可以連線到其他的namespace中的服務。
kubectl可以通過 –namespace 或者 -n x來設定namespace。如果不設定,預設為default。可以透過 – all-namespace=true 來查詢所有 namespace 下的元件。
因為namespace可以提供獨立的命名空間,因此可以實現部分的環境隔離。當你的專案和開發人員很多的時候可以考慮根據專案環境,例如 開發、測試、產品 用來劃分不同的namespace。
$ kubectl create namespace new-namespace
$ cat my-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: new-namespace
$ kubectl create -f ./my-namespace.yaml
以下指令會查到預設的兩個 default 與 kube-system 以及剛剛新增的 new-namespace
$ kubectl get namespaces
NAME STATUS AGE
default Active 30m
kube-system Active 30m
new-namespace Active 5m
namespace 有 Active 和 Terminating 兩種狀態。在 namespace 刪除過程中,namespace狀態被設成 Terminating
透過以下指令可以刪除 namespace,而default和kube-system namespace不可以删除。
$ kubectl delete namespaces new-namespace