汇总表格

类型中文名称英文名称最大长度正则表达式/备注
DNS子域名PodPod253^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
ConfigMap253同上
DaemonSet253同上
Secret253同上
EndpointSlice253同上
Ingress253同上
Gateway253同上
Listener(gateway-api)253同上
HTTPRoute(gateway-api)253同上
TCPRoute(gateway-api)253同上
UDPRoute(gateway-api)253同上
网络策略NetworkPolicy253同上
RFC 1123 标签名命名空间Namespace63
RFC 1035 标签名服务Service63^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
路径分段名称Role
RoleBinding
ClusterRole
ClusterRoleBinding
helm 应用名称应用名称53^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
其他注解键Annotations Key317长度(253+1+63), 值无限制
注解前缀Annotations Prefix253正则同 DNS子域名, 值无限制
注解名称Annotations Name63正则同标签名称, 值无限制
标签Label381长度(253+1+63+1+63)
标签键Label Key253正则同 DNS子域名
标签名称Label Name63^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
标签值Label Value63标签名称
端口名称Port Name15

对象名称和 IDs | Kubernetes

以下是比较常见的四种资源命名约束。

DNS 子域名【长度253】

正则表达式:^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

很多资源类型需要可以用作 DNS 子域名的名称。 DNS 子域名的定义可参见 RFC 1123。 这一要求意味着名称必须满足如下规则:

  • 不能超过 253 个字符
  • 只能包含小写字母、数字,以及 ‘-’ 和 ‘.’
  • 必须以字母数字开头
  • 必须以字母数字结尾
  • DNS子域名多级使用 “.” 连接,每一级以字母数字开头,以字母数字结尾,“-”只能出现在每一级的中间

相关资源类型:

RFC 1123 标签名 【长度63】

某些资源类型需要其名称遵循 RFC 1123 所定义的 DNS 标签标准。也就是命名必须满足如下规则:

  • 最多 63 个字符
  • 只能包含小写字母、数字,以及 ‘-’
  • 必须以字母数字开头
  • 必须以字母数字结尾

相关资源类型:

  • 命名空间(Namespace)

RFC 1035 标签名【长度63】

某些资源类型需要其名称遵循 RFC 1035 所定义的 DNS 标签标准。也就是命名必须满足如下规则:

  • 最多 63 个字符
  • 只能包含小写字母、数字,以及 ‘-’
  • 必须以字母开头
  • 必须以字母数字结尾

相关资源类型:

  • 服务(Service)

路径分段名称(Path Segment Names)

某些资源类型要求名称能被安全地用作路径中的片段。 换句话说,其名称不能是 ...,也不可以包含 / 或 % 这些字符。

相关资源类型: Role、ClusterRole、RoleBinding、ClusterRoleBinding

其他

镜像名称

参考 https://kubernetes.io/zh/docs/concepts/containers/images/#image-names

标签【label】【最长381=253+1+63+1+63】

参考 标签和选择算符 | Kubernetes

标签合法格式:[前缀/]标签名称:[标签值]

  • 前缀【正则表达式同 DNS子域名】是可选的。如果指定,前缀必须是 DNS 子域:由点(.)分隔的一系列 DNS 标签,总共不超过 253 个字符, 后跟斜杠(/)

  • 名称【正则:^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$】是必需的,必须小于等于 63 个字符,以字母数字字符([a-z0-9A-Z])开头和结尾, 带有破折号(-),下划线(_),点( .)和之间的字母数字。

有效标签值:【正则表达式同标签名称】

  • 必须为 63 个字符或更少(可以为空)
  • 除非标签值为空,必须以字母数字字符([a-z0-9A-Z])开头和结尾
  • 包含破折号(-)、下划线(_)、点(.)和字母或数字

应用名称【Release.name】【长度53】

长度限制为 53 个字符,正则表达式为:

1
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

提示: 由于DNS系统的限制,name:字段长度限制为63个字符。因此发布名称限制为53个字符。 Kubernetes 1.3及更早版本限制为24个字符 (名称长度是14个字符)。

提示: 向最终用户对象添加标签的自动系统组件(例如 kube-scheduler、kube-controller-manager、 kube-apiserver、kubectl 或其他第三方自动化工具)必须指定前缀。

注解【Annotations】【key最长317=253+1+63,value无限制】

参考: 注解 | Kubernetes 语法和字符集

注解合法格式:[前缀/]标签名称:[标签值]

  • 前缀是可选的。如果指定,前缀必须是 DNS 子域:由点(.)分隔的一系列 DNS 标签,总共不超过 253 个字符, 后跟斜杠(/)
  • 名称是必需的,必须小于等于 63 个字符,以字母数字字符([a-z0-9A-Z])开头和结尾, 带有破折号(-),下划线(_),点( .)和之间的字母数字。

提示: 由系统组件添加的注解 (例如,kube-scheduler,kube-controller-manager,kube-apiserver,kubectl 或其他第三方组件),必须为终端用户添加注解前缀。

端口名称【最长15】

  • 最多 15 个字符
  • 只能包含小写字母、数字,以及 ‘-’,且’-‘不能连续
  • 必须以字母数字开头
  • 必须以字母数字结尾

参考文档

  1. 名字空间和 DNS
  2. DaemonSet 必须字段
  3. 服务(Service)- 定义 Service
  4. Ingress 资源