Kubernetes pod 命名约定

Kubernetes pod naming convention

我想知道 Kubernetes 中生成的 pod 名称是否有适当的命名约定。通过生成的 pod 名称,我的意思是在 kubectl get pods 中显示的名称,或者,例如,通过查询 heapster api:

$ curl -s http://192.168.99.100:32416/api/v1/model/namespaces/kube-system/pods
[
"kube-addon-manager-minikube",
"kube-dns-v20-8gsbl",
"kubernetes-dashboard-tp9kc",
"heapster-kj8hh",
"influxdb-grafana-stg3s"
]

$ curl -s http://192.168.99.100:32416/api/v1/model/namespaces/default/pods
[
"my-nginx-2723453542-065rx"
]

如果没有约定(看起来像),是否存在通用格式 pod name + 5 alpha-numeric chars 为真的任何场景?

如果您使用部署,为了人工操作员的缘故,您会发现您的 pods 名称为 <replicaset>-<[0-9a-z]{5}>,其中副本集为 <deployment>-<id>。对于 kubernetes 本身,pods 的命名是无关紧要的。

如果您使用部署,则命名约定如下:

|--- 部署:<名称>
-----└─ 副本集:-
--------└─ Pod: --

命名约定:

当您创建 Deployment 时,它会创建一个 replicaset 命名为:

replica-set-name = <deployment-name>-<random-string>

replicaset 反过来创建 pods 添加另一个 随机字符串 *:

<replica-set-name>-<random-string>


示例:

$ kubectl create deploy nginx --image=nginx
deployment.apps/nginx created

$ kubectl scale --replicas=3 deploy/nginx 
deployment.extensions/nginx scaled

$ kubectl get replicaset
NAME                                     DESIRED   CURRENT   READY   AGE
nginx-554b9c67f9                         3         3         3       96s

$ kubectl get po
NAME                                           READY   STATUS    RESTARTS   AGE
nginx-554b9c67f9-c5cv4                         1/1     Running   0          74s
nginx-554b9c67f9-hjkjq                         1/1     Running   0          74s
nginx-554b9c67f9-wbwdm                         1/1     Running   0          2m7s

* 一点都不随机:

事实上,"random strings" 根本不是完全随机的。

为了防止“坏词”,元音和数字013 已从 rand.String 函数中删除(PR 供参考:#37225 and #50070)。

因此,<random-string> 将由以下字母数字字符组合组成:bcdfghjklmnpqrstvwxz2456789.

如果您使用 StatefulSets,则命名约定为:

|--- StatefulSets: < name >
│----------└─ Pod: < name >-< ordinal index >

例如postgresql-0