本文環境爲Kubernetes V1.11,操作系統版本爲 CentOs 7.3,Kubernetes集羣安裝可以參考 kubeadm安裝kubernetes V1.11.1 集羣
1. 什麼是Namespaces
Kubernetes中提供了命名空間,但是如果你的團隊規模比較小並且集羣規模也不大,完全可以不用Namespaces而使用labels
來區分不同的資源,隨着項目增多、集羣規模擴大、人員的增加,你才需要使用Namespaces,通過namespace你可以創建多個虛擬的集羣。
Namespaces提供了一種在不同用戶間分隔集羣資源的方法,未來Kubernetes可能會提供基於命名空間的權限控制。
2. Namespaces 的常用操作
2.1 查看命名空間
[root@devops-101 ~]# kubectl get namespaces NAME STATUS AGE default Active 7d kube-public Active 7d kube-system Active 7d
Kubernetes默認有三個命名空間
- default:默認的命名空間
- kube-system:由Kubernetes系統對象組成的命名空間
- kube-public:該空間由系統自動創建並且對所有用戶可讀性,做爲集羣公用資源的保留命名空間
2.2 創建命名空間
[root@devops-101 ~]# kubectl create namespace test-cluster namespace/test-cluster created [root@devops-101 ~]# kubectl get namespaces NAME STATUS AGE default Active 7d kube-public Active 7d kube-system Active 7d test-cluster Active 3s
2.2 查詢命名空間中的資源
[root@devops-101 ~]# kubectl get all --namespace=test-cluster No resources found. [root@devops-101 ~]# kubectl get all -n test-clutser No resources found. [root@devops-101 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION devops-101 Ready master 7d v1.11.2 devops-102 Ready <none> 7d v1.11.2 devops-103 NotReady <none> 4d v1.11.2
2.3 修改默認的namespace配置
# kubectl config view //先查看是否設置了current-context # kubectl config set-context default --namespace=bs-test //設置default配置的namespace參數 # kubectl config set current-context default //設置當前環境變量爲 default
通過這段代碼設置默認的命名空間後,就不用每次在輸入命令的時候帶上--namespace
參數了。
3. 注意
不是所有的對象都在命名空間中,例如 nodes、persistentVolumes 就沒有命名空間,所有用戶都是可見的。
可以通過下面的命令查看命名空間中的資源。
[root@devops-101 ~]# kubectl api-resources --namespaced=true # 查看不在命名空間中的資源 [root@devops-101 ~]# kubectl api-resources --namespaced=false