Label一般用于对各类资源进行分组管理。
Selector主要用于资源的匹配,只有符合条件的资源才会被调用或使用,可以使用该方法对集群中的各类资源进行分配。
1. 添加标签
kubectl label node k8s-worker02 key1=value1
在k8s-worker02上添加key1=value1的标签。
其他资源可以使用该方法添加标签,比如service等:
kubectl label svc canary-v1 -n canary-production env=canary version=v1
2. 查看标签
# kubectl get node k8s-worker02 --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-worker02 Ready <none> 170d v1.28.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,key1=value1,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-worker02,kubernetes.io/os=linux
会列出被查对象的所有标签。
# kubectl get node -l key1=value1
NAME STATUS ROLES AGE VERSION
k8s-worker02 Ready <none> 170d v1.28.2
会将有符合条件的标签的资源显示出来。
# kubectl get node -l 'key in (value1, value2)' --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-worker01 Ready <none> 170d v1.28.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,key=value1,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-worker01,kubernetes.io/os=linux
k8s-worker02 Ready <none> 170d v1.28.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,key=value2,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-worker02,kubernetes.io/os=linux
选择匹配key为value1或者values的node。
# kubectl get node -l version!=v1 'key in (value1, value2)' --show-labels
选择匹配key为value1或value2但不包括version=1的node。
3. 修改标签
比如将上面的 key1=value1 改为 key1=value2:
# kubectl label node k8s-worker02 key1=value2 --overwrite
node/k8s-worker02 labeled
# kubectl get node k8s-worker02 --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-worker02 Ready <none> 170d v1.28.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,key1=value2,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-worker02,kubernetes.io/os=linux
4. 删除标签
将上面的key1=value2标签进行删除:
# kubectl label node k8s-worker02 key1-
node/k8s-worker02 unlabeled
# kubectl get node k8s-worker02 --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-worker02 Ready <none> 170d v1.28.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-worker02,kubernetes.io/os=linux
查出需要的标签,可写入到相应的资源yaml中,实现选择器的功能。