Dawn's Blogs

分享技术 记录成长

0%

Kubernetes学习 (3) Kubernetes对象之对象名称和ID 标签和选择符

对象名称和 ID

集群中每一个对象都有一个名称(name)来标识在同类资源中的唯一性,每一个对象也有一个 UID 来标识在整个集群中的唯一性。

名称

名称在同类资源中是唯一的。

当对象所代表的是一个物理实体(例如代表一台物理主机的 Node)时, 如果在 Node 对象未被删除并重建的条件下重新创建了同名的物理主机, 则 Kubernetes 会将新的主机看作是老的主机,这可能会带来某种不一致性。

UID

UID 是 k8s 系统生成的全局唯一标识符。

标签和选择符

标签是附加到 Kubernetes 对象上的键值对。

1
2
3
4
5
metadata:
name: demo
labels:
key1: value1
key2: value2

选择符

通过标签选择符,用户可以识别一组对象。

API 目前支持两种类型的选择算符:基于等值的基于集合的。 标签选择算符可以由逗号分隔的多个需求组成。 在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑运算符。

基于等值的运算符

基于等值的运算符有三种 ===!=,前两者标识同义的相等,第三个是不相等。

基于集合的运算符

基于集合的运算符有三种 innotinexists

  • 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
2
3
4
5
6
7
8
9
10
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxzy
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress