对象名称和 ID
集群中每一个对象都有一个名称(name)来标识在同类资源中的唯一性,每一个对象也有一个 UID 来标识在整个集群中的唯一性。
名称
名称在同类资源中是唯一的。
当对象所代表的是一个物理实体(例如代表一台物理主机的 Node)时, 如果在 Node 对象未被删除并重建的条件下,重新创建了同名的物理主机, 则 Kubernetes 会将新的主机看作是老的主机,这可能会带来某种不一致性。
UID
UID 是 k8s 系统生成的全局唯一标识符。
标签和选择符
标签是附加到 Kubernetes 对象上的键值对。
1 | metadata: |
选择符
通过标签选择符,用户可以识别一组对象。
API 目前支持两种类型的选择算符:基于等值的和基于集合的。 标签选择算符可以由逗号分隔的多个需求组成。 在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑与运算符。
基于等值的运算符
基于等值的运算符有三种 =
、==
和 !=
,前两者标识同义的相等,第三个是不相等。
基于集合的运算符
基于集合的运算符有三种 in
、notin
和 exists
。
- key in (v1, v2)
- key:有 key 标签的对象。
- !key:没有 key 标签的对象。
推荐使用的标签
推荐标签使管理应用程序变得更容易,推荐标签都使用同一个前缀:app.kubernetes.io
,共享前缀可以确保共享标签不会干扰用户自定义的标签。
键 | 描述 | 示例 | 类型 |
---|---|---|---|
app.kubernetes.io/name |
应用程序的名称 | mysql | 字符串 |
app.kubernetes.io/instance |
用于唯一确定应用实例的名称 | mysql-abcxzy | 字符串 |
app.kubernetes.io/version |
应用程序的当前版本(例如语义版本 1.0、修订版哈希等) | 5.7.21 | 字符串 |
app.kubernetes.io/component |
架构中的组件 | database | 字符串 |
app.kubernetes.io/part-of |
此级别的更高级别应用程序的名称 | wordpress | 字符串 |
app.kubernetes.io/managed-by |
用于管理应用程序的工具 | helm | 字符串 |
1 | apiVersion: apps/v1 |