Kubernetes Naming Constraints

🏠 首页 / Kubernetes / Kubernetes 中资源名称规范

Kubernetes 中资源名称规范 #

在Kubernetes中,同一种资源(GVR)在同一个命名空间下名称是唯一。但是名称也需要遵循命名规则。本篇主要介绍 Kubernetes 中三种资源名称的命名规范。

DNS1123Subdomain #

  • 不能超过 253 个字符
  • 只能包含小写字母、数字,以及 ‘-’ 和 ‘.’
  • 必须以字母数字开头
  • 必须以字母数字结尾

以此规范约束的资源有:

  • Ingress
  • Pod
  • ConfigMap
  • NetworkPolicy

DNS1123Label #

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

以此规范约束的资源有:

  • Namespace
  • Service

DNS1035Label #

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

以此规范约束的资源有:

  • Deployment
  • StatefulSet

建议 #

如果资源命名符合 DNS1035Label 规范,那么一定符合 Kubernetes 资源命名规范。假如在容器平台开发过程中,为了命名约束更加统一,建议使用 DNS1035Label 规范来约束资源命名。

可以使用下面的代码(Go)来检查资源名称是否符合规范:

引入包:

go get k8s.io/apimachinery/pkg/util/validation

示例代码:

package main

import (
    "k8s.io/apimachinery/pkg/util/validation"
)

func main() {
    namespace: = "test-ns"

    if msgs := validation.IsDNS1123Subdomain(namespace); len(msgs) > 0 {
        fmt.Println("namespace name is not valid")
    }
}

« Kubernetes Dashboard

» Kuberentes