【问题标题】:Kubernetes pod naming conventionKubernetes pod 命名约定
【发布时间】:2017-09-13 18:27:44
【问题描述】:

我想知道 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 为真?

【问题讨论】:

    标签: kubernetes naming


    【解决方案1】:

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

    |--- 部署:
    -----└─ 副本集:-
    --------└─ Pod:--

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,我想会是这样。
      【解决方案3】:

      命名约定:

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

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

      replicaset 反过来创建 pod,向它们添加另一个 随机字符串*

      <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
      

      * 完全不是随机的:

      事实上,“随机字符串”根本不是完全随机的。

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

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

      【讨论】:

      • 嘿,你知道随机字符串是否总是特定的大小吗?
      • 特别感谢您提供有关避免“坏话”的额外信息!
      【解决方案4】:

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

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

      例如postgresql-0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        • 2023-03-03
        相关资源
        最近更新 更多