label和labelSeletor

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 名命规范

数字、字母 、“ - ”

原文地址:https://www.cnblogs.com/kaizi111/p/12001705.html