您好,登錄后才能下訂單哦!
今天小編給大家分享一下Kubernetes特別屬性的標簽Label有什么作用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Label
:對k8s中各種資源進行分類、分組,添加一個具有特別屬性的標簽
Selector
:通過一個過濾的語法進行查找到對應標簽的資源
Label是k8s中一個比較重要的概念。一個Label的一個key=value的鍵值對,可以附加到各種資源上。
現總結后講解
name=nginx:這類是直接匹配
name!=nginx:匹配標簽中沒有name=nginx的資源
name in (A,B):匹配所有具有name=A和name=B標簽的資源
name not in (A):匹配所有不具有標簽A的資源
通過上圖可以看到:frontend通過service服務匹配到backend服務器,當service的標簽是app=nginx時那么會匹配到backend的兩組服務器,但是當service中篩選加上Role=backend-app時,Selector只會篩選到backend服務器組中包含這兩種標簽的服務器然后進行匹配。
通過下面這條命令可以看到Pod的標簽:通過–show-labels參數
最后一列LABELS是Pod的標簽
[root@k8s-master01 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS busybox 1/1 Running 28 (16h ago) 9d <none> hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f
那么我們就可以嘗試著用kubectl給Pod添加標簽:從上列代碼中我們是可以看到busybox是沒有標簽,通過下面這條命令在查看發現已經有標簽app=busybox
了。
[root@k8s-master01 ~]# kubectl label pod busybox app=busybox pod/busybox labeled [root@k8s-master01 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS busybox 1/1 Running 28 (16h ago) 9d app=busybox hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f
如果一個集群中Pod非常多的時候,我們就可以通過用標簽篩選的方式找到想要的Pod;-A參數是查看所有的Pod,但是加上-l app=busybox后只會找到符合這個條件的Pod。
[root@k8s-master01 ~]# kubectl get pod -A -l app=busybox NAMESPACE NAME READY STATUS RESTARTS AGE default busybox 1/1 Running 28 (16h ago) 9d
那么問題來了,要是我們不想要這個標簽了或者說需要修改這個標簽了怎么辦?
刪除標簽:
[root@k8s-master01 ~]# kubectl label pod busybox app- pod/busybox unlabeled [root@k8s-master01 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS busybox 1/1 Running 28 (16h ago) 9d <none> hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f
修改標簽:可以看出標簽已經是修改后的了。
[root@k8s-master01 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS busybox 1/1 Running 28 (16h ago) 9d app=busybox hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f [root@k8s-master01 ~]# kubectl label pod busybox app=busybox22222 --overwrite pod/busybox labeled [root@k8s-master01 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS busybox 1/1 Running 28 (16h ago) 9d app=busybox22222 hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f
Labels是很簡單的一個東西,接下來我們看看Selector是怎么用的
我想過濾出多個條件的pod又該怎么做呢?
[root@k8s-master01 ~]# kubectl get pod -A --show-labels NAMESPACE NAME READY STATUS RESTARTS AGE LABELS default busybox 1/1 Running 29 (3m19s ago) 9d app=busybox22222 default hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 18h app=hpa-nginx,pod-template-hash=bd88bdd8f kube-system calico-kube-controllers-5dffd5886b-4blh7 1/1 Running 2 (2d1h ago) 9d k8s-app=calico-kube-controllers,pod-template-hash=5dffd5886b kube-system calico-node-fvbdq 1/1 Running 2 (2d1h ago) 9d controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1 kube-system calico-node-g8nqd 1/1 Running 0 9d controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1 kube-system calico-node-mdps8 1/1 Running 0 9d controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1 kube-system calico-node-nf4nt 1/1 Running 1 (4d1h ago) 9d controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1 kube-system calico-node-sq2ml 1/1 Running 1 (2d1h ago) 9d controller-revision-hash=79878cdc56,k8s-app=calico-node,pod-template-generation=1 kube-system calico-typha-8445487f56-mg6p8 1/1 Running 0 9d k8s-app=calico-typha,pod-template-hash=8445487f56 kube-system calico-typha-8445487f56-pxbpj 1/1 Running 1 (2d1h ago) 9d k8s-app=calico-typha,pod-template-hash=8445487f56 kube-system calico-typha-8445487f56-tnssl 1/1 Running 0 9d k8s-app=calico-typha,pod-template-hash=8445487f56 kube-system coredns-5db5696c7-67h79 1/1 Running 1 (2d1h ago) 9d k8s-app=kube-dns,pod-template-hash=5db5696c7 kube-system metrics-server-6bf7dcd649-5fhrw 1/1 Running 2 (4d1h ago) 9d k8s-app=metrics-server,pod-template-hash=6bf7dcd649 kubernetes-dashboard dashboard-metrics-scraper-7fcdff5f4c-9kk86 1/1 Running 1 (2d1h ago) 9d k8s-app=dashboard-metrics-scraper,pod-template-hash=7fcdff5f4c kubernetes-dashboard kubernetes-dashboard-85f59f8ff7-js9j2 1/1 Running 12 (2d1h ago) 9d k8s-app=kubernetes-dashboard,pod-template-hash=85f59f8ff7
以上就是我們的所有Pod了,我想要找到標簽中包含kubernetes-dashboard和kube-dns的容器:
[root@k8s-master01 ~]# kubectl get pod -A -l 'k8s-app in (kubernetes-dashboard,kube-dns)' NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-5db5696c7-67h79 1/1 Running 1 (2d1h ago) 9d kubernetes-dashboard kubernetes-dashboard-85f59f8ff7-js9j2 1/1 Running 12 (2d1h ago) 9d
找到了這兩個Pod,說明這兩個Pod中包含這兩個標簽,可以在上面的所有容器列表里看看這兩個Pod是否含有這兩個標簽。
還有一種情況是比如我有一批Pod的標簽是這樣:
我想查看其中不包含ABB=X的所有Pod,可以這樣寫:
kubectl get po -l ABB!=X,APC=A
這樣的話只會找到Pod02和Pod03。
以上就是“Kubernetes特別屬性的標簽Label有什么作用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。