对象名称和 ID
在您的集群中,每个 对象 都有一个 名称,该名称对于该类型的资源是唯一的。每个 Kubernetes 对象还有一个 UID,该 UID 在整个集群中是唯一的。
例如,您只能在同一个 命名空间 中拥有一个名为 myapp-1234
的 Pod,但您可以拥有一个名为 myapp-1234
的 Pod 和一个 Deployment。
对于非唯一的用户提供属性,Kubernetes 提供了 标签 和 注释。
名称
一个客户端提供的字符串,它引用资源 URL 中的对象,例如 /api/v1/pods/some-name
。
一次只能有一个给定类型的对象具有给定的名称。但是,如果您删除了该对象,则可以创建一个具有相同名称的新对象。
名称在同一资源的所有 API 版本 中必须是唯一的。API 资源由其 API 组、资源类型、命名空间(对于有命名空间的资源)和名称来区分。换句话说,API 版本在这种情况下无关紧要。
注意
在对象表示物理实体的情况下,例如 Node 表示物理主机,当主机在不删除和重新创建 Node 的情况下使用相同的名称重新创建时,Kubernetes 会将新主机视为旧主机,这可能会导致不一致。以下是四种常用的资源名称约束类型。
DNS 子域名
大多数资源类型需要一个名称,该名称可以用作 DNS 子域名,如 RFC 1123 中所定义。这意味着该名称必须
- 不超过 253 个字符
- 仅包含小写字母数字字符、'-' 或 '.'
- 以字母数字字符开头
- 以字母数字字符结尾
RFC 1123 标签名称
某些资源类型要求其名称遵循 RFC 1123 中定义的 DNS 标签标准。这意味着该名称必须
- 最多包含 63 个字符
- 仅包含小写字母数字字符或 '-'
- 以字母数字字符开头
- 以字母数字字符结尾
RFC 1035 标签名称
某些资源类型要求其名称遵循 RFC 1035 中定义的 DNS 标签标准。这意味着该名称必须
- 最多包含 63 个字符
- 仅包含小写字母数字字符或 '-'
- 以字母字符开头
- 以字母数字字符结尾
注意
RFC 1035 和 RFC 1123 标签标准之间的唯一区别是,RFC 1123 标签允许以数字开头,而 RFC 1035 标签只能以小写字母字符开头。路径段名称
某些资源类型要求其名称能够安全地编码为路径段。换句话说,名称不能是 "." 或 "..",并且名称不能包含 "/" 或 "%".
以下是一个名为 nginx-demo
的 Pod 的清单示例。
apiVersion: v1
kind: Pod
metadata:
name: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
注意
某些资源类型对其名称有额外的限制。UID
一个 Kubernetes 系统生成的字符串,用于唯一标识对象。
在 Kubernetes 集群的整个生命周期内创建的每个对象都有一个不同的 UID。它旨在区分类似实体的历史发生情况。
Kubernetes UID 是通用唯一标识符 (也称为 UUID)。UUID 标准化为 ISO/IEC 9834-8 和 ITU-T X.667。
下一步
- 了解 Kubernetes 中的 标签 和 注释。
- 查看 Kubernetes 中的标识符和名称 设计文档。