Kubernetes命名空間及標簽


命名空間(namespace)是Kubernetes提供的組織機制,用於給集群中的任何對象組進行分類、篩選和管理。每一個添加到Kubernetes集群的工作負載必須放在一個命名空間中。

命名空間的作用:

1、命名空間為集群中的對象名稱賦予作用域,有效實現隔離。雖然在命名空間中名稱必須是唯一的,但是相同的名稱可以在不同的命名空間中使用。這對於某些場景來說可能幫助很大。例如,如果使用命名空間來划分應用程序生命周期環境(如開發、測試、生產),則可以在每個環境中維護利用同樣的名稱維護相同對象的副本。

2、命名空間還可以讓用戶輕松地將策略應用到集群的具體部分。

3、使用命名空間最大的好處之一是能夠利用Kubernetes RBAC(基於角色的訪問控制)。

預配置的Kubernetes命名空間

在我們進行創建命名空間之前,先討論一下Kubernetes是如何自動設置它的。在默認情況下,新的集群上有三個命名空間:

  • default:向集群中添加對象而不提供命名空間,這樣它會被放入默認的命名空間中。在創建替代的命名空間之前,該命名空間會充當用戶新添加資源的主要目的地,無法刪除。
  • kube-public:kube-public命名空間的目的是讓所有具有或不具有身份驗證的用戶都能全局可讀。這對於公開bootstrap組件所需的集群信息非常有用。它主要是由Kubernetes自己管理。
  • kube-system:kube-system命名空間用於Kubernetes管理的Kubernetes組件,一般規則是,避免向該命名空間添加普通的工作負載。它一般由系統直接管理,因此具有相對寬松的策略。

命名空間命令操作

1、顯示集群中所以命名空間:

[root@localhost ~]# kubectl get namespaces
NAME          STATUS   AGE
default       Active   2d22h
kube-public   Active   2d22h
kube-system   Active   2d22h

2、查看指定命名空間下的pod對象

[root@localhost ~]# kubectl get pods -n kube-system
NAME                                    READY   STATUS    RESTARTS   AGE
coredns-6c66ffc55b-w9zcb                1/1     Running   0          2d22h
etcd-minikube                           1/1     Running   0          2d22h
kube-addon-manager-minikube             1/1     Running   5          2d22h
kube-apiserver-minikube                 1/1     Running   1          2d22h
kube-controller-manager-minikube        1/1     Running   0          2d22h
kube-proxy-bjq4n                        1/1     Running   0          2d22h
kube-scheduler-minikube                 1/1     Running   5          2d22h
kubernetes-dashboard-6d97598877-xmhkp   1/1     Running   0          2d22h
storage-provisioner                     1/1     Running   0          2d22h
[root@localhost ~]# 

3、創建命名空間demo-test

[root@localhost ~]# kubectl create namespace demo-test
namespace/demo-test created
[root@localhost ~]# 

4、刪除命名空間

[root@localhost ~]# kubectl get namespaces
NAME          STATUS   AGE
default       Active   2d22h
demo-test     Active   2m7s
kube-public   Active   2d22h
kube-system   Active   2d22h
[root@localhost ~]# 
[root@localhost ~]# kubectl delete namespace demo-test
namespace "demo-test" deleted
[root@localhost ~]#

5、查看所有pod所屬的命名空間

[root@localhost ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
default       nginx-55bd7c9fd-9jhg2                   1/1     Running   0          2d22h
default       nginx-55bd7c9fd-cphvg                   1/1     Running   0          2d22h
default       nginx-55bd7c9fd-s4lnk                   1/1     Running   0          2d20h
kube-system   coredns-6c66ffc55b-w9zcb                1/1     Running   0          2d22h
kube-system   etcd-minikube                           1/1     Running   0          2d22h
kube-system   kube-addon-manager-minikube             1/1     Running   5          2d22h
kube-system   kube-apiserver-minikube                 1/1     Running   1          2d22h
kube-system   kube-controller-manager-minikube        1/1     Running   0          2d22h
kube-system   kube-proxy-bjq4n                        1/1     Running   0          2d22h
kube-system   kube-scheduler-minikube                 1/1     Running   5          2d22h
kube-system   kubernetes-dashboard-6d97598877-xmhkp   1/1     Running   0          2d22h
kube-system   storage-provisioner                     1/1     Running   0          2d22h
[root@localhost ~]# 

6、指定命名空間

# kubectl create -f xxx.yaml -n namespace_name
或者
[root@localhost ~]# kubectl create deployment nginx --image=nginx -n demo-test

7、獲取命名空間的詳細信息,使用kubectl describe命令:

[root@localhost ~]# kubectl describe namespace kube-system
Name:         kube-system
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"kube-system","namespace":""}}
Status:       Active

No resource quota.

No resource limits.
[root@localhost ~]# 

K8S——Label(標簽)

查看標簽

需要使用--showlabels選項來查看pod的標簽

#查看pod的標簽
[root@k8s-master ~]# kubectl get pod --show-labels
NAME                             READY   STATUS    RESTARTS   AGE   LABELS
nginx-deploy-868855d887-2qc44    1/1     Running   0          45m   app=nginx,pod-template-hash=868855d887
nginx-deploy-868855d887-6l884    1/1     Running   0          18h   app=nginx,pod-template-hash=868855d887
nginx-deploy-868855d887-sbqjq    1/1     Running   0          18h   app=nginx,pod-template-hash=868855d887
tomcat-deploy-7bf9b544c7-4vnsx   1/1     Running   0          45m   app=tomcat,pod-template-hash=7bf9b544c7
tomcat-deploy-7bf9b544c7-6cm5f   1/1     Running   0          16h   app=tomcat,pod-template-hash=7bf9b544c7
tomcat-deploy-7bf9b544c7-bwhsq   1/1     Running   0          16h   app=tomcat,pod-template-hash=7bf9b544c7
[root@k8s-master ~]# 
#查看node標簽
[root@k8s-master ~]# kubectl get node --show-labels
NAME         STATUS   ROLES    AGE     VERSION   LABELS
k8s-master   Ready    master   5d18h   v1.18.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01   Ready    <none>   5d17h   v1.18.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,isIngress=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02   Ready    <none>   5d17h   v1.18.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,isIngress=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
[root@k8s-master ~]# 

#指定標簽的key值查詢
[root@k8s-master ~]# kubectl get pod -L app
NAME                             READY   STATUS    RESTARTS   AGE   APP
nginx-deploy-868855d887-2qc44    1/1     Running   0          46m   nginx
nginx-deploy-868855d887-6l884    1/1     Running   0          18h   nginx
nginx-deploy-868855d887-sbqjq    1/1     Running   0          18h   nginx
tomcat-deploy-7bf9b544c7-4vnsx   1/1     Running   0          46m   tomcat
tomcat-deploy-7bf9b544c7-6cm5f   1/1     Running   0          16h   tomcat
tomcat-deploy-7bf9b544c7-bwhsq   1/1     Running   0          16h   tomcat
[root@k8s-master ~]# 

 根據svc、pod的標簽,進行服務篩選:

[root@localhost nginx-ingress]# kubectl get pod -n monitoring -l app=prometheus
NAME               READY   STATUS    RESTARTS   AGE
prometheus-k8s-0   2/2     Running   1          54m
prometheus-k8s-1   2/2     Running   1          54m
[root@localhost nginx-ingress]# 
[root@hz01 nginx-ingress]# kubectl get svc -n monitoring -l app=grafana
NAME      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
grafana   NodePort   192.168.87.255   <none>        3000:30712/TCP   27h

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM