当前位置: 首页 > news >正文

Kubernetes 标签和注解

1. 标签

标签(Labels) 是附加到 Kubernetes 对象(比如 Pod)上的键值对。
标签可以用于组织和选择对象的子集。标签可以在创建时附加到对象,随后可以随时添加和修改。 每个对象都可以定义一组键/值标签。每个键对于给定对象必须是唯一的。

有效标签值:

  • 必须为 63 个字符或更少(可以为空)
  • 除非标签值为空,必须以字母数字字符([a-z0-9A-Z])开头和结尾
  • 包含破折号(-)、下划线(_)、点(.)和字母或数字

例如,下面定义了 environment: production 和 app: nginx 两个标签

apiVersion: v1
kind: Pod
metadata:name: label-demolabels:environment: productionapp: nginx
spec:...

标签选择符

所谓标签选择符(Label selectors,官方文档翻译为“标签选择算符”)就是如何通过过滤标签来识别一组对象。标签选择算符是 Kubernetes 中的核心分组原语。
API 目前支持两种类型的选择算符:基于等值的和基于集合的。可以由逗号分隔的多个需求组成。

基于等值的需求

可对标签的通过=、== 和 != 三种运算符进行筛选,前两个表示相等(并且是同义词),后者表示不相等。、
例如,environment=production,tier!=frontend,很简单,不多说。

基于集合的需求

支持对标签的使用三种操作符:in、notin 和 exists,程序员都能看懂,不多说。
例如,environment in (production, qa)tier notin (frontend, backend)

kubectl 中使用

使用kubectl label --help 可查看查询帮助,-L-l, --selector是用于标签的可选项。

新增和更新标签

新增和更新一个对象的标签,都使用kubectl label命令,如果原标签不存在则会新增。
例如,对名为 nginx-test 的 Pod 新增一个 tier=backend 标签:

kubectl label pods nginx-test tier=backend

如果原标签已存在,要更新则要加一个--overwrite可选项才会更新,否则会报错。例如,要更新名为 nginx-test 的 Pod 的 env 标签值为 prd:

kubectl label pods nginx-test --overwrite env=prd

查看标签值

使用kubectl get --help 查看帮助。
要在查看资源的同时展示标签,可添加--show-labels可选项。例如,查看名为 nginx-test 的 Pod(可以不指定查所有 Pod)包括标签的信息:

kubectl get pod nginx-test --show-labels

要单独查看某一资源的所有标签值,使用kubectl label命令,加上--list=true可选项。例如,要查看名为 nginx-test 的标签:

kubectl label pods nginx-test --list=true

其结果可能为:

app=nginx-test
env=uat

要查看某一类或某一个指定资源的指定标签值,可用-L可选项。例如,要查看所有 pod 的 app、env 标签的值:

kubectl get pods -Lapp -Lenv

要查看名为 nginx-test 的 Pod 的 app、env 标签值:

kubectl get pods nginx-test -Lapp -Lenv

使用标签过滤查询

-l, --selector='':Selector (label query) to filter on, supports '=', '==', '!=', 'in', 'notin'.(e.g. -lkey1=value1,key2=value2,key3 in (value3)). Matching objects must satisfy all of the specified labelconstraints.

即,标签是使用-l--selector可选项来接受标签选择符(注意,区分大小写),例如:

kubectl get pods -l app=nginx-test,env=uat

kubectl get pods -selector nginx-test,env=uat

删除标签

在标签的后加-即表示删除。例如,要删除 nginx-test 的 tier 标签:

kubectl label pods nginx-test tier-

要删除所有 Pod 的标签,添加个--all可选项:

kubectl label pods tier-

2. 注解

注解可以为对象附加任意的非标识的元数据,客户端程序(例如工具和库)能够获取这些元数据信息。
注解和标签本质都是“键值对”,都可以将元数据附加到 Kubernetes 对象,但注解不用于标识和选择对象。 注解中的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的(例如可以是 json数据),能够包含标签不允许的字符。 可以在同一对象的元数据中同时使用标签和注解。

官方文档对注解的使用场景说明:

  • 由声明性配置所管理的字段。 将这些字段附加为注解,能够将它们与客户端或服务端设置的默认值、 自动生成的字段以及通过自动调整大小或自动伸缩系统设置的字段区分开来。
  • 构建、发布或镜像信息(如时间戳、发布 ID、Git 分支、PR 数量、镜像哈希、仓库地址)。
  • 指向日志记录、监控、分析或审计仓库的指针。
  • 可用于调试目的的客户端库或工具信息:例如,名称、版本和构建信息。
  • 用户或者工具/系统的来源信息,例如来自其他生态系统组件的相关对象的 URL。
  • 轻量级上线工具的元数据信息:例如,配置或检查点。
  • 负责人员的电话或呼机号码,或指定在何处可以找到该信息的目录条目,如团队网站。
  • 从用户到最终运行的指令,以修改行为或使用非标准功能。

可以看到,注解主要用来标识对象的非功能性信息,该信息可用来更全面地了解对象,而不会对对象的行为起作用
例如,给 Pod 对象添加镜像源地址注解 metadata.annotations.imageregistry:

apiVersion: v1
kind: Pod
metadata:name: annotations-demoannotations:imageregistry: "https://hub.docker.com/"
spec:...

新增和更新注解

使用kubectl annotate --help查看文档帮助。
使用kubectl annotate命令给对象添加注解。例如要给一个名为 nginx-deploy 的 deployment 添加注解 desc:

kubectl annotate deploy nginx-deploy desc=‘这是一个测试注解’

如果该注解原来不存在则新增,如果已经存在且最新的值与原来的值相同,则不更新,如果最新值与原来的值不同,则会报错;如果要覆盖更新原来的值,则要加--overwrite可选项:

kubectl annotate deploy nginx-deploy --overwrite desc=‘这是一个新测试注解’

查询注解

查询一个对象的所有注解,需要加上--list可选项。例如,查询 nginx-deploy 注解:

kubectl annotate deploy nginx-deploy --list

删除注解

同删除标签一样,只需要在要删除的注解键后面加-即可。例如,要删掉 nginx-deploy 的 desc 注解:

kubectl annotate deploy nginx-deploy desc-

参考

[1] Kubernetes 文档:标签和选择算符
[2] Kubernetes 文档:注解

相关文章:

  • Unity
  • [ linux-系统 ] 进程概念与基本操作
  • 【大模型】DeepResearcher:通用智能体通过强化学习探索优化
  • 嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
  • 大便次数与寿命有关?
  • 通过SSRF击穿内网!kali-ssrf靶场实战!
  • 基于MNIST数据集的手写数字识别(简单全连接网络)
  • 蓝桥杯 16. 外卖店优先级
  • 抖音怎么快速涨粉(抖音推流算法研究)
  • Qt多线程编程实践总结:QtConcurrent与moveToThread应用场景对比(可以说都是干货)
  • 接口(API)开发核心知识点
  • Qt —— 使用Enigma Virtual Box将Qt程序打包为独立可运行exe(附:完整打包方法且完美运行)
  • CSRF防范歪招
  • 分区器介绍
  • Java集合框架详解与使用场景示例
  • PyInstaller 打包后 Excel 转 CSV 报错解决方案:“excel file format cannot be determined“
  • uniapp(vue3)动态计算swiper高度封装自定义hook
  • Foupk3systemX5OS TXW8移动设备
  • UE5中制作动态数字Decal
  • While语句数数字
  • 经济日报整版聚焦:上海构建法治化营商环境,交出高分答卷
  • 乌拉圭前总统何塞·穆希卡去世
  • 王毅人民日报撰文:共商发展振兴,共建中拉命运共同体
  • A股高开高走:沪指涨0.82%,创指涨2.63%,超4100股收涨
  • 著名学者黄修己去世,享年90岁
  • 普京提议恢复直接谈判,泽连斯基:望俄明日停火,乌愿谈判