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

如果文章对您有所帮助,可以点一下推荐哦
原文地址:https://www.cnblogs.com/virgosnail/p/14609732.html