K8S标签和选择算符
标签(Labels)是附加到K8S对象(如POD)上的键值对。
标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义
标签可以用于组织和选择对象的子集。
标签可以在创建时附加到对象,随后可以随时添加和修改
每个对象都可以定义一组键/值标签
每个键对于给定对象必须是唯一的
"metadata":{
"labels":{
"key1": "value1",
"key2": "value2"
}
}
标签使用户能够以松散耦合的方式将他们直接的组织结构映射到系统对象,而无需客户都存储这些映射。
语法和字符集
标签是键值对。有效的标签键有两个段:可选的前缀和名称,用斜杠(/
)分隔。名称段时必须的,必须小于等于63个字符,以字母数字字符([a-z0-9A-Z]
)开头和结尾,带有破折号(-
),下划线(_
),点(.
)和之间的字母数字。前缀时可选的。如果指定,前缀必须是DNS子域:由点(.
)分割的一系列DNS标签。总共不超过253个字符,后跟斜杠(/
)。
如果省略前缀,则假定标签键对用户时私有的。向最红用户对象添加标签的自动系统组件(如kube-scheduler
、kube-controller-manager
、kube-apiserver
、kubectl
或其他第三方自动化工具)必须指定前缀。
kubernetes.io/
和k8s.io/
前缀为K8S核心组件保留。
有效标签值
- 必须为63个字符或更少(可以为空)
- 除非标签值为空,必须以字母数字字符(
[a-z0-9A-Z]
)开头和结尾 - 包含破折号(
-
)、下划线(_
)、点(.
)和字母或数字
例如,以下是一个清单(manifest),适用于具有environment: production
和app: nginx
这两个标签的Pod:
apiVersion: v1
kind: Pod
metadate:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
交流群: