Labels 选择器
The API currently supports two types of selectors: equality-based and set-based.
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2"
}
}
与Name和UID 不同,标签不需要有唯一性。一般来说,我们期望许多对象具有相同的标签。
通过标签选择器(Labels Selectors),客户端/用户 能方便辨识出一组对象。标签选择器是kubernetes中核心的组成部分。
API目前支持两种选择器:equality-based(基于平等)和set-based(基于集合)的。标签选择器可以由逗号分隔的多个requirements 组成。在多重需求的情况下,必须满足所有要求,因此逗号分隔符作为AND逻辑运算符。
一个为空的标签选择器(即有0个必须条件的选择器)会选择集合中的每一个对象。
一个null型标签选择器(仅对于可选的选择器字段才可能)不会返回任何对象。
注意:两个控制器的标签选择器不能在命名空间中重叠。
Equality-based requirement 基于相等的要求
基于相等的或者不相等的条件允许用标签的keys和values进行过滤。匹配的对象必须满足所有指定的标签约束,尽管他们可能也有额外的标签。有三种运算符是允许的,“=”,“==”和“!=”。前两种代表相等性(他们是同义运算符),后一种代表非相等性。例如:
environment = production
tier != frontend
第一个选择所有key等于 environment 值为 production 的资源。后一种选择所有key为 tier 值不等于 frontend 的资源,和那些没有key为 tier 的label的资源。要过滤所有处于 production 但不是 frontend 的资源,可以使用逗号操作符,
frontend:environment=production,tier!=frontend
Set-based requirement
Set-based 的标签条件允许用一组value来过滤key。支持三种操作符: in , notin 和 exists(仅针对于key符号) 。例如:
environment in (production, qa)
tier notin (frontend, backend)
partition
!partition
第一个例子,选择所有key等于 environment ,且value等于 production 或者 qa 的资源。 第二个例子,选择所有key等于 tier 且值是除了 frontend 和 backend 之外的资源,和那些没有标签的key是 tier 的资源。 第三个例子,选择所有有一个标签的key为partition的资源;value是什么不会被检查。 第四个例子,选择所有的没有lable的key名为 partition 的资源;value是什么不会被检查。
类似的,逗号操作符相当于一个AND操作符。因而要使用一个 partition 键(不管value是什么),并且 environment 不是 qa 过滤资源可以用 partition,environment notin (qa) 。
Set-based 的选择器是一个相等性的宽泛的形式,因为 environment=production 相当于environment in (production) ,与 != and notin 类似。
Set-based的条件可以与Equality-based的条件结合。例如, partition in (customerA,customerB),environment!=qa 。
DNS 名命规范
数字、字母 、“ - ”