Kubernates: label
1. 常用命令
0. 查询标签含义
示例:
查看Deployment.spec.selector的含义
kubectl explain Deployment.spec.selector
1. 查看所有节点label
kubectl get node --show-labels
2. 查看node的label
kubectl get node node_name --show-labels
3. 添加node的label
kubectl label nodes node_name key=value
4. 修改node的label
kubectl label nodes node_name key=vakue --overwrite
5. 删除node的label
kubectl label nodes node_name key-
删除时需要在key的后面加一个-
6. pod 添加label
kubectl -n namespace label pod pod-name key=value
2. meta中的label
查询资源时可根据meta中的label进行过滤
apiVersion: apps/v1beta2
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "7"
creationTimestamp: "2021-03-25T09:25:30Z"
generation: 9
labels:
k8s-app: api-manager
api-label: xxx
qcloud-app: api-manager
通过meta中的label的key在查询资源时进行过滤
kubectl -n name_space get resource -l label_key
[root@VM_0_16_centos ~]# kubectl -nskd-platform get deploy -l api-label
NAME READY UP-TO-DATE AVAILABLE AGE
api-manager 1/1 1 1 26d
3. matchLabels和template.meta.labels
matchLabels必须是template.meta.labels的子集
matchLabels中的标签template.meta.labels中必须有
template.meta.labels中的标签中matchLabels不一定有
该deploy的副本数根据matchLabels中的label计算
如果要修改其中matchLabels的label,必须先删除已经存在的deploy,修改后重新部署
4. 副本数
1. deploy
deploy根据replicas参数来控制副本的数量
spec:
replicas: 2
selector:
matchLabels:
k8s-app: api-manager
qcloud-app: api-manager
api-label: xxx
deploy会创建一个ReplicationSet,deploy根据RS中的template.meta.labels信息和自己的matchLabels信息比对,若匹配成功则该RS对象是自己持有的,否则根据自己模板信息创建一个RS对象
RS根据自己的模板信息创建pod,根据pod里面的template.meta.labels和自己的matchLabels信息比对,若匹配成功则该pod对象是自己持有的,否则根据自己模板信息创建指定数量的pod对象
5. service
service代理根据自己的meta.labels和pod的template.meta.labels判断自己代理哪些pod
如果文章对您有所帮助,可以点一下推荐