集群中的每个对象都有一个对于该资源类型唯一的名称(敬请期待~~)。每个 Kubernetes 对象还具有在整个集群中唯一的 UID。
例如,在同一个命名空间(敬请期待~~)中只能有一个名为 myapp-1234
的 Pod,但是我们可以有名为 myapp-1234
的 Pod 和 Deployment。
对于非唯一的用户提供的属性,Kubernetes 提供标签(敬请期待~~)及注解(敬请期待~~)。
名称
客户端提供的字符串,它引用资源 URL 中的对象,例如 /api/v1/pods/some-name
。
给定种类的一个对象一次只能有一个给定的名称。但是,如果删除该对象,则可以使用相同的名称插件一个新对象。
以下是三种常用的资源名称约束。
DNS 子域名
大多数资源类型都需要一个名称,该名称可以用作 RFC 1123 中定义的 DNS 子域名。这意味着该名称必须:
- 最多包涵 253 个字符;
- 仅包含小写字母数字字符 “-” 或 “。”;
- 以字母数字字符开头;
- 以字母数字字符结尾。
DNS 标签名称
某些资源类型要求其名称遵循 RFC 1123 中定义的 DNS 标签标准。这意味着名称必须:
- 最多包含 63 个字符;
- 仅包含小写字母数字字符或 “-”;
- 以字母数字字符开头;
- 以字母数字字符结尾。
路径段名称
某些资源类型要求其名称能够安全地编码为路径段。换句话说,名称可能不是 “。” 或 “…”,并且名称中不得包含 “/” 或 “%”。
这是一个名为 nginx-demo 的 Pod 的示例清单。
apiVersion: v1
kind: Pod
metadata:
name: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Note: 某些资源类型对其名称由其他限制。
UID
Kubernetes 系统生成的字符串来唯一标识对象。
在 Kubernetes 集群的整个生命周期中插件的每个对象都有一个独特的 UID。旨在区分相似实体的历史事件。
Kubernetes UID 是普遍唯一的标识符(也称为 UUID)。UUID 被标准化为 ISO/IEC 9834-8 及 ITU-T X.667。