kubernetes资源命名约束
名称和 UID
UID
:一个非空的、不透明的、系统生成的值,保证在时间和空间上是唯一的;旨在区分类似实体的历史事件。
Name
:保证在特定时间在给定范围内唯一的非空字符串;用于资源 URL;由客户在创建时提供,并鼓励对人类友好;旨在促进单例对象的创建幂等性和空间唯一性,区分不同的实体。
名称和 UID 的目标
- 跨空间和时间唯一标识(通过 UID)对象。
- 跨空间唯一地命名(通过名称)对象。
- 在 API 操作或配置文件中提供人性化的名称。
- 允许 API 资源的幂等创建 (#148) 和单例对象的空间唯一性的实施。
- 允许为某些对象自动生成 DNS 名称。
名称
客户端提供的字符串,它引用资源 URL 中的对象,例如/api/v1/pods/some-name
.
一次只能有一个给定类型的对象具有给定名称。但是,如果您删除该对象,您可以创建一个具有相同名称的新对象。
**注意:**当对象代表一个物理实体时,比如 Node 代表一个物理主机,当主机以相同的名称重新创建而不删除和重新创建 Node 时,Kubernetes 将新主机视为旧主机,这可能导致不一致。
DNS 子域名
很多资源类型需要可以用作 DNS 子域名的名称。 DNS 子域名的定义可参见 RFC 1123。 这一要求意味着名称必须满足如下规则:
- 不能超过 253 个字符
- 只能包含小写字母、数字,以及 ‘-’ 和 ‘.’
- 必须以字母数字开头
- 必须以字母数字结尾
RFC 1123 标签名
某些资源类型需要其名称遵循 RFC 1123 所定义的 DNS 标签标准。也就是命名必须满足如下规则:
- 最多 63 个字符
- 只能包含小写字母、数字,以及 ‘-’
- 必须以字母数字开头
- 必须以字母数字结尾
RFC 1035 标签名
某些资源类型需要其名称遵循 RFC 1035 所定义的 DNS 标签标准。也就是命名必须满足如下规则:
- 最多 63 个字符
- 只能包含小写字母、数字,以及 ‘-’
- 必须以字母开头
- 必须以字母数字结尾
路径分段名称
某些资源类型要求名称能被安全地用作路径中的片段。 换句话说,其名称不能是 .
、..
,也不可以包含 /
或 %
这些字符。
节点命名规则
# 公有云方案1 # Node的名称会在集群资源分配阶段确定下来,每个节点都会分配到一个序号`${seq}`,从0开始的自增整型。这个与k8s中StatefulSet的命名规则保持一致,因此能够做到云上云下一致管理。 <cluster_name>-<seq> # 公有云方案2 数据中心-机房-node-number # 公有云方案3(推荐) # 用.分割更好 # 这样dns上你可以分到子域里 # 这样自动化时候,你就对着某个子域,防止写错到全局 # 在私有云环境中可以加上机架号,便于机器故障快速定位 kubenode{number}.集群代号.机房.公司domain