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- |
| |
| kubectl label node allinone kubernetes.io/role=master --overwrite |
| kubectl label node allinone node-role.kubernetes.io/master="" --overwrite |
| |
| 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 |
| |
| 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":{}} |
示例二:记录陈述式命令
| |
| 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" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏