标签(Labels),是附加到k8s对象上的键值对标识,支持高效的查找和监听。作用就是字面意思,给k8s对象打上标签,我们可以使用标签来选择对象。
和**注解(annotations)**的区别在于注解仅用于记录一些元数据,不能用来做标识。不支持高效查找和监听
为什么要有标签
开发人员日常工作中肯定会用到类似id
的概念,id
就是用来唯一标识某个对象。标签也是用来做标识,不过它可以从多个维度来标识,这就增加了通过标识来管理的灵活性。
k8s管理的对象往往是很灵活而不是有固定层次结构的,比如管理应用的发布,会涉及到环境env、版本release、区域region,还经常是交叉管理。用标签的话,就可以直接查找到自己想要管理的对象。
标签的语法
标签键:
- 一般情况下,键包括前缀和名称,用
/
分隔 - 前缀可以省略,省略则视为用户私有标签。
- 指定前缀,前缀必须是DNS子域,
- 名称必须,不超过63个字符
k8s.io/
和kubernetes.io/
前缀是为k8s核心组件保留的
标签值
- 不超过63个字符,可以为空
- 字母数字开头和结尾
- 可以包含 - _ . 字母 数字
其他
- 每个对象都可以有多个标签,但是同一对象每个标签的键值必须是唯一的。
- 不同对象间的标签可以相同