label 和 annotation

label

label的作用:方便识别和选择,就像我们把一个商品打上标签一样。

label作用范围: node pod deployment service resources

常见标签规范:

版本标签:"release":"stable","release":"canary","release":"beta"。
环境标签:"environment":"dev","environment":"qa","environment":"production"
应⽤标签:"app":"ui","app":"as","app":"pc","app":"sc"。
架构层级标签:"tier":"frontend","tier":"backend","tier":"cache"。
分区标签:"partition":"customerA","partition":"customerB"。
品控级别标签:"track":"daily","track":"weekly"

示例一:给node 添加label

kubectl label node hdss7-22.host.com  disktype=ssd --overwrite
kubectl label node hdss7-22.host.com  disktype-
# 给node打上master角色标签
kubectl label node allinone kubernetes.io/role=master --overwrite
kubectl label node allinone node-role.kubernetes.io/master=""  --overwrite
# 给node打上node角色标签
kubectl label node allinone kubernetes.io/role=node --overwrite
kubectl label node allinone node-role.kubernetes.io/node='' --overwrite
# 添加其他标签
kubectl label node allinone node-role.kubernetes.io/aa='' 

示例二:给pod 添加label

kubectl run test1 --image=alpine --labels=env=pro  -- sleep 1000
kubectl label pod test1 tier=frontend

按照label查询资源

kubectl get pod --show-labels
# 展示key为tier的pod 标签
kubectl get pod -L tier
#
kubectl get pods -l env=pro,tier=frontend
kubectl get pods -l 'env in (production),tier in (frontend)'
kubectl get pods -l 'env in (production, qa)'
kubectl get pods -l 'env,environment notin (frontend)'

annotation

annotation 和label功能类似,在开源插件中常常看到annotation的妙用。

示例一:记录声明式文件

kubectl run test2 --image=alpine --restart=Never --save-config   -- sleep 100
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"kind":"Pod","apiVersion":"v1","metadata":{"name":"test2","creationTimestamp":null,"labels":{"run":"test2"}},"spec":{"containers":[{"name":"test2","image":"alpine","args":["sleep","100"],"resources":{}}],"restartPolicy":"Never","dnsPolicy":"ClusterFirst"},"status":{}}

示例二:记录陈述式命令

#Flag --record has been deprecated, --record will be removed in the future
kubectl run test3 --image=alpine --restart=Never --record
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubernetes.io/change-cause: kubectl run test3 --image=alpine --restart=Never --record=true

示例三:指定默认的sc

annotations:
  storageclass.kubernetes.io/is-default-class: "true"

示例四:在ing-ng中的应用

annotations:
  kubernetes.io/ingress.class: "nginx"

添加annotation

kubectl annotate pod test1 describe="this is a test annotation"
posted @ 2021-09-12 11:29  mingtian是吧  阅读(10)  评论(0编辑  收藏  举报