Kubernetes-Label
Label是kubernetes系統中的一個重要概念。它的作用就是在資源上添加標識,用來對它們進行區分和選擇。
Label的特點:
-
一個Label會以key/value鍵值對的形式附加到各種對象上,如Node、Pod、Service等等
-
一個資源對象可以定義任意數量的Label ,同一個Label也可以被添加到任意數量的資源對象上去
-
Label通常在資源對象定義時確定,當然也可以在對象創建后動態添加或者刪除
可以通過Label實現資源的多維度分組,以便靈活、方便地進行資源分配、調度、配置、部署等管理工作。
一些常用的Label 示例如下:
-
版本標簽:"version":"release", "version":"stable"......
-
環境標簽:"environment":"dev","environment":"test","environment":"pro"
-
架構標簽:"tier":"frontend","tier":"backend"
標簽定義完畢之后,還要考慮到標簽的選擇,這就要使用到Label Selector,即:
Label用于給某個資源對象定義標識
Label Selector用于查詢和篩選擁有某些標簽的資源對象
當前有兩種Label Selector:
-
基于等式的Label Selector
name = slave: 選擇所有包含Label中key="name"且value="slave"的對象
env != production: 選擇所有包括Label中的key="env"且value不等于"production"的對象
-
基于集合的Label Selector
name in (master, slave): 選擇所有包含Label中的key="name"且value="master"或"slave"的對象
name not in (frontend): 選擇所有包含Label中的key="name"且value不等于"frontend"的對象
標簽的選擇條件可以使用多個,此時將多個Label Selector進行組合,使用逗號","進行分隔即可。例如:
name=slave,env!=production
name not in (frontend),env!=production
命令方式
# 為pod資源打標簽 [root@master ~]# kubectl label pod nginx-pod version=1.0 -n dev pod/nginx-pod labeled ? # 為pod資源更新標簽 [root@master ~]# kubectl label pod nginx-pod version=2.0 -n dev --overwrite pod/nginx-pod labeled ? # 查看標簽 [root@master ~]# kubectl get pod nginx-pod -n dev --show-labels NAME ? ? ? READY ? STATUS ? RESTARTS ? AGE ? LABELS nginx-pod ? 1/1 ? ? Running ? 0 ? ? ? ? 10m ? version=2.0 ? # 篩選標簽 [root@master ~]# kubectl get pod -n dev -l version=2.0 --show-labels NAME ? ? ? READY ? STATUS ? RESTARTS ? AGE ? LABELS nginx-pod ? 1/1 ? ? Running ? 0 ? ? ? ? 17m ? version=2.0 [root@master ~]# kubectl get pod -n dev -l version!=2.0 --show-labels No resources found in dev namespace. ? #刪除標簽 [root@master ~]# kubectl label pod nginx-pod version- -n dev pod/nginx-pod labeled配置方式
apiVersion: v1 kind: Pod metadata:name: nginxnamespace: devlabels:version: "3.0" env: "test" spec:containers:- image: nginx:latestname: podports:- name: nginx-portcontainerPort: 80protocol: TCP然后就可以執行對應的更新命令了:kubectl apply -f pod-nginx.yaml
總結
以上是生活随笔為你收集整理的Kubernetes-Label的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Namespace
- 下一篇: kubernetes-Deploymen