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" 根本不是完全随机的。
为了防止“坏词”,元音和数字0、1和3 已从 rand.String
函数中删除(PR 供参考:#37225 and #50070)。
因此,<random-string>
将由以下字母数字字符组合组成:bcdfghjklmnpqrstvwxz2456789
.
如果您使用 StatefulSets,则命名约定为:
|--- StatefulSets: < name >
│----------└─ Pod: < name >-< ordinal index >
例如postgresql-0
我想知道 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" 根本不是完全随机的。
为了防止“坏词”,元音和数字0、1和3 已从 rand.String
函数中删除(PR 供参考:#37225 and #50070)。
因此,<random-string>
将由以下字母数字字符组合组成:bcdfghjklmnpqrstvwxz2456789
.
如果您使用 StatefulSets,则命名约定为:
|--- StatefulSets: < name >
│----------└─ Pod: < name >-< ordinal index >
例如postgresql-0