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"

推荐使用的标签

labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxyz
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress
app.kubernetes.io/managed-by: Helm

示例一:给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 @   mingtian是吧  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示