Files
kuboard-press/learning/k8s-intermediate/obj/names.md
huanqing.shao f175aecd74 命名规则
2020-07-25 19:12:13 +08:00

2.6 KiB
Raw Blame History

vssueId, layout, description, meta
vssueId layout description meta
135 LearningLayout Kubernetes教程_Kubernetes_REST_API中_所有的对象都是通过_name_和_UID_唯一性确定
name content
keywords Kubernetes 对象,管理Kubernetes对象,Kubernetes Object

名称

Kubernetes REST API 中,所有的对象都是通过 nameUID 唯一性确定。查看文档 identifiers design doc 可了解更多关于 nameUID 的规则。

Names

可以通过 namespace + name 唯一性地确定一个 RESTFUL 对象,例如:

/api/v1/namespaces/{namespace}/pods/{name}

参考 名称空间

同一个名称空间下,同一个类型的对象,可以通过 name 唯一性确定。如果删除该对象之后,可以再重新创建一个同名对象。

下面是三种广泛使用的资源名称的限制类型:

DNS Subdomain Names

绝大部分资源类型的名称必须符合 DNS subdomain 命名规则 RFC 1123,具体如下:

  • 最长不超过 253个字符
  • 必须由小写字母、数字、减号 -、小数点 . 组成
  • 由字母开始
  • 由字母结束

DNS Label Names

部分类型的资源要求其名称符合 DNS Label 的命名规则 RFC 1123,具体如下:

  • 最长不超过 63个字符
  • 必须由小写字母、数字、减号 -、小数点 . 组成
  • 由字母开始
  • 由字母结束

Path Segment Names

部分类型的资源要求其名称可以被编码到路径中。换句话说,名称中不能包含 .../%

例如,下面的配置文件定义了一个 name 为 nginx-demo 的 Pod该 Pod 包含一个 name 为 nginx 的容器:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

::: tip 还有一部分资源类型,其名称有更多的限制要求 :::

UIDs

UID 是由 Kubernetes 系统生成的,唯一标识某个 Kubernetes 对象的字符串。

Kubernetes集群中每创建一个对象都有一个唯一的 UID。用于区分多次创建的同名对象如前所述按照名字删除对象后重新再创建同名对象时两次创建的对象 name 相同,但是 UID 不同。)

Kubernetes 中的 UID 是全局唯一的标识符UUIDs符合规范 ISO/IEC 9834-8 以及 ITU-T X.667