Kubernetes & Namespace
阿新 • • 發佈:2020-08-05
Kubernetes & Namespace
Namespace
(名稱空間)是Kubernetes系統中的另一個非常重要的概念。
Namespace在很多情況下用於實現多租戶的資源隔離。Namespace通過將叢集內部的資源物件“分配”到不同的Namespace中,形成邏輯上分組的不同專案、小組或使用者組,便於不同的分組在共享使用整個叢集的資源的同時還能被分別管理。
Kubernetes叢集在啟動後會建立一個名為default的Namespace,通過kubectl可以檢視。
roverliang@roverliangdeMac-mini study % kubectl get namespaces NAME STATUS AGE default Active 45h kube-node-lease Active 45h kube-public Active 45h kube-system Active 45h kubernetes-dashboard Active 44h
接下來,如果不特別指明Namespace,則使用者建立的Pod、RC、Service都將被系統建立到這個預設的名為default的Namespace中。
Namespace的定義很簡單。如下所示的YAML定義了名為development
的Namespace。
apiVersion: v1
kind: Namespace
metadata:
name: development
一旦建立了Namespace
,我們在建立資源物件時就可以指定這個資源物件屬於哪個Namespace。比如在下面的例子中定義了一個名為busybox
的Pod,並將其放入development
這個Namespace
裡
apiVersion: v1 kind: Pod metadata: name: busybox namespace: development spec: containers: - image: busybox command: - sleep - "3600" name: busybox
建立Namespace
overliang@roverliangdeMac-mini study % kubectl create -f development.yaml
namespace/development created
建立busybox-pod
roverliang@roverliangdeMac-mini study % kubectl create -f developement-pod.yaml
pod/busybox created
檢視所有的pods
roverliang@roverliangdeMac-mini study % kubectl get pods NAME READY STATUS RESTARTS AGE hello-minikube-64b64df8c9-x6gzz 1/1 Running 0 45h mysql-frrfx 1/1 Running 0 27h myweb-9jv2z 1/1 Running 0 27h myweb-jcjpz 1/1 Running 0 27h myweb-t5hc6 1/1 Running 0 27h
如果不加引數,則kubectl get命令將僅顯示屬於default名稱空間的資源物件。
可以在kubectl命令中加入--namespace引數來檢視某個名稱空間中的物件:
roverliang@roverliangdeMac-mini study % kubectl get pods --namespace=development
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 32s
當給每個租戶建立一個Namespace來實現多租戶的資源隔離時,還能結合Kubernetes的資源配額管理,限定不同租戶能佔用的資源,例如CPU使用量、記憶體使用量等。