kubernetes资源命名约束和最佳实践

Posted 琦彦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes资源命名约束和最佳实践相关的知识,希望对你有一定的参考价值。

kubernetes资源命名约束

名称和 UID

UID:一个非空的、不透明的、系统生成的值,保证在时间和空间上是唯一的;旨在区分类似实体的历史事件。

Name:保证在特定时间在给定范围内唯一的非空字符串;用于资源 URL;由客户在创建时提供,并鼓励对人类友好;旨在促进单例对象的创建幂等性和空间唯一性,区分不同的实体。

名称和 UID 的目标

  1. 跨空间和时间唯一标识(通过 UID)对象。
  2. 跨空间唯一地命名(通过名称)对象。
  3. 在 API 操作或配置文件中提供人性化的名称。
  4. 允许 API 资源的幂等创建 (#148) 和单例对象的空间唯一性的实施。
  5. 允许为某些对象自动生成 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上你可以分到子域里
# 这样自动化时候,你就对着某个子域,防止写错到全局
# 在私有云环境中可以加上机架号,便于机器故障快速定位
kubenodenumber.集群代号.机房.公司domain

参考链接

Kubernetes 对象名称和 IDs

https://datatracker.ietf.org/doc/html/rfc1123

Kubernetes 设计:标识符和名称

以上是关于kubernetes资源命名约束和最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

验证Kubernetes YAML的最佳实践和策略

Kubernetes 学习总结(30)—— Kubernetes YAML 最佳实践和策略

Kubernetes 学习总结(30)—— Kubernetes YAML 最佳实践和策略

Kubernetes APIServer 最佳实践

Helm(三)—最佳实践

你真的理解 Kubernetes 中的 requests 和 limits 吗?