4. Label与Annotation
Label(标签)是识别Kubernetes对象的标签,也是不同资源之间互相关联的方式。以key/value的方式附加到对象上(key最长不能超过63字节,value可以为空,也可以是不超过253字节的字符串)。Label不提供唯一性,并且实际上经常是很多对象(如Pods)都使用相同的label来标志具体的应用。
Label有哪些作用:
Controller和Service可以通过label slector控制Pod生命周期
影响调度
影响网络策略
annotate(注释)可以将Kubernetes资源对象关联到任意的非标识性元数据。使用客户端(如工具和库)可以检索到这些元数据。

4.1 Label
# 查看资源的标签信息
kubectl get nodes node01 —show-labels
kubectl describe nodes node01 |less
kubectl get nodes node01 -o yaml |less

设置node的角色标签
kubectl label nodes node01 node-role.kubernetes.io/work=

删除节点的角色标签
kubectl label nodes node01 node-role.kubernetes.io/work-

  1. [rancher@rmaster01 ~]$ kubectl label nodes node01 disktype=ssd
  2. node/node01 labeled
  3. [rancher@rmaster01 ~]$ kubectl label nodes node01 app=
  4. node/node01 labeled
  5. [rancher@rmaster01 ~]$ kubectl get nodes node01 --show-labels
  6. NAME STATUS ROLES AGE VERSION LABELS
  7. node01 Ready worker 17d v1.17.2 app=,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=node01,kubernetes.io/os=linux,node-role.kubernetes.io/worker=
  8. [rancher@rmaster01 ~]$
  9. [rancher@rmaster01 ~]$ kubectl label nodes node01 disktype-
  10. node/node01 labeled
  11. [rancher@rmaster01 ~]$ kubectl label nodes node01 app-
  12. node/node01 labeled
  13. [rancher@rmaster01 ~]$ kubectl get nodes node01 --show-labels
  14. NAME STATUS ROLES AGE VERSION LABELS
  15. node01 Ready worker 17d v1.17.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node01,kubernetes.io/os=linux,node-role.kubernetes.io/worker=
  16. [rancher@rmaster01 ~]$

4.2 Annotation
# 查看Annotation
kubectl describe resource_type resource_name
# 添加Annotation
kubectl annotate resource_type resource_name key=value