aNamespace(命名空間)是kubernetes系統中的另一個重要的概念,通過將系統內部的對象“分配”到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便于不同的分組在共享使用整個集群的資源的同時還能被分別管理。
Kubernetes集群在啟動后,會創建一個名為“default”的Namespace,如果不特別指明Namespace,則用戶創建的Pod、RC、Service都被系統創建到“default”的Namespace中。
[plain]view plaincopy
[root@localhost?k8s]#?kubectl?get?namespaces
NAME??????STATUS????AGE
default???Active????6d
直接創建Namespace。
[plain]view plaincopy
apiVersion:?v1
kind:?Namespace
metadata:
name:?development
labels:
name:?development
[plain]view plaincopy
[root@localhost?k8s]#?kubectl?get?namespace
NAME??????????STATUS????AGE
default???????Active????6d
development???Active????6s
創建Pod/RC/Service時,如果不指定Namespace,則默認是"default"的Namespace。
比如[root@localhost k8s]# kubectl get podPHP-controller-2bvdq -o yaml查看一個通過RC創建的Pod
php-pod.yaml
[plain]view plaincopy
apiVersion:?v1
kind:?Pod
metadata:
name:?php-test
labels:
name:?php-test
namespace:?development
spec:
containers:
-?name:?php-test
image:?192.168.174.131:5000/php-base:1.0
env:
-?name:?ENV_TEST_1
value:?env_test_1
-?name:?ENV_TEST_2
value:?env_test_2
ports:
-?containerPort:?80
hostPort:?80
[plain]view plaincopy
[root@localhost?k8s]#?kubectl?create?-f?php-pod.yaml
pod?"php-test"?created
[root@localhost?k8s]#?kubectl?get?pods
[root@localhost?k8s]#?kubectl?get?pods?--namespace=development
NAME???????READY?????STATUS????RESTARTS???AGE
php-test???1/1???????Running???0??????????1m
[root@localhost?k8s]#
kubectl get pods時,沒有任何結果,因為默認的是查詢namespace=default的,所以要加上namespace參數。同理創建RC/Service也是一樣的。
通過使用Namespace來組織k8s的各種對象,可以實現對用戶的分組,即“多租戶”管理。對不同的租戶還可以進行單獨的資源配額設置和管理,使得整個集群的資源配置非常靈活、方便。關于租戶配額后期學習。