Kubernetes特別屬性的標(biāo)簽Label的強(qiáng)大作用
前言
Label
:對(duì)k8s中各種資源進(jìn)行分類、分組,添加一個(gè)具有特別屬性的標(biāo)簽
Selector
:通過一個(gè)過濾的語法進(jìn)行查找到對(duì)應(yīng)標(biāo)簽的資源
Label是k8s中一個(gè)比較重要的概念。一個(gè)Label的一個(gè)key=value的鍵值對(duì),可以附加到各種資源上。
現(xiàn)總結(jié)后講解
Label的匹配規(guī)則:
- name=nginx:這類是直接匹配
- name!=nginx:匹配標(biāo)簽中沒有name=nginx的資源
- name in (A,B):匹配所有具有name=A和name=B標(biāo)簽的資源
- name not in (A):匹配所有不具有標(biāo)簽A的資源
通過上圖可以看到:frontend通過service服務(wù)匹配到backend服務(wù)器,當(dāng)service的標(biāo)簽是app=nginx時(shí)那么會(huì)匹配到backend的兩組服務(wù)器,但是當(dāng)service中篩選加上Role=backend-app時(shí),Selector只會(huì)篩選到backend服務(wù)器組中包含這兩種標(biāo)簽的服務(wù)器然后進(jìn)行匹配。
通過下面這條命令可以看到Pod的標(biāo)簽:通過–show-labels參數(shù)
最后一列LABELS是Pod的標(biāo)簽
[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添加標(biāo)簽:從上列代碼中我們是可以看到busybox是沒有標(biāo)簽,通過下面這條命令在查看發(fā)現(xiàn)已經(jīng)有標(biāo)簽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
如果一個(gè)集群中Pod非常多的時(shí)候,我們就可以通過用標(biāo)簽篩選的方式找到想要的Pod;-A參數(shù)是查看所有的Pod,但是加上-l app=busybox后只會(huì)找到符合這個(gè)條件的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
那么問題來了,要是我們不想要這個(gè)標(biāo)簽了或者說需要修改這個(gè)標(biāo)簽了怎么辦?
刪除標(biāo)簽:
[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
修改標(biāo)簽:可以看出標(biāo)簽已經(jīng)是修改后的了。
[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是很簡(jiǎn)單的一個(gè)東西,接下來我們看看Selector是怎么用的
我想過濾出多個(gè)條件的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-4blh6 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了,我想要找到標(biāo)簽中包含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
找到了這兩個(gè)Pod,說明這兩個(gè)Pod中包含這兩個(gè)標(biāo)簽,可以在上面的所有容器列表里看看這兩個(gè)Pod是否含有這兩個(gè)標(biāo)簽。
還有一種情況是比如我有一批Pod的標(biāo)簽是這樣:
我想查看其中不包含ABB=X的所有Pod,可以這樣寫:
kubectl get po -l ABB!=X,APC=A
這樣的話只會(huì)找到Pod02和Pod03。
總結(jié):這個(gè)功能不難但是比較重要,也比較常用,一定要知道。
以上就是Kubernetes特別屬性的標(biāo)簽Label的強(qiáng)大作用的詳細(xì)內(nèi)容,更多關(guān)于Kubernetes屬性Label標(biāo)簽作用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Kubernetes特別屬性的標(biāo)簽Label的強(qiáng)大作用
這篇文章主要為大家介紹了Kubernetes特別屬性的標(biāo)簽Label的強(qiáng)大作用介紹,希望可以對(duì)大家有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03rsync @ERROR: chdir failed 的解決方法
這篇文章主要介紹了rsync @ERROR: chdir failed 的解決方法,需要的朋友可以參考下2015-01-01UDP DUP超時(shí)UPD端口狀態(tài)檢測(cè)代碼示例
這篇文章主要介紹了UDP DUP超時(shí)UPD端口狀態(tài)檢測(cè),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10vscode內(nèi)網(wǎng)訪問服務(wù)器的方法
這篇文章主要介紹了vscode內(nèi)網(wǎng)訪問服務(wù)器的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯(cuò)誤的解決方法
寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯(cuò)誤的解決方法,經(jīng)常會(huì)出現(xiàn)數(shù)據(jù)庫管理phpMyadmin打不開,或則出現(xiàn)500內(nèi)部服務(wù)器錯(cuò)誤,本文介紹如果出現(xiàn)這個(gè)問題該如何解決2023-08-08在Windows平臺(tái)下安裝與配置Memcached的方法分享
在Windows平臺(tái)下安裝與配置Memcached的方法,Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載2012-05-05如何在power shell添加vim實(shí)現(xiàn)代碼示例
這篇文章主要介紹了如何在power shell添加vim實(shí)現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12