首页 > 解决方案 > Kubernetes 控制 pod 名称

问题描述

Kubernetes 是一个非常复杂的工具,但我们中的一些人有点粗糙,所以我们遇到了麻烦。

我正在尝试在集群中的 pod 上运行一个简单的 kubernetes 作业,并且在 kubernetes yaml 配置文件中,我在元数据下定义了 pod 的名称,例如

apiVersion: batch/v1
kind: Job
metadata:
  name: my-job

然后,当我创建此作业时,我发现 pod 的名称并不是我真正的作业。它的:

my-job-'randomstuff' 

我知道这对于副本集和诸如此类的东西非常酷,但是我需要将我的 pod 命名为我告诉它的名称,因为我在回调函数中使用了该名称。

在我看来很奇怪,当我创建它时,我无法完全控制我想要调用的 pod。

我告诉自己,这一定是可能的,但我已经用 googledfrenzied 了一个小时......

非常感谢您的任何想法:)

标签: kubernetes

解决方案


作业被设计为具有随机后缀,因为它们可能有多个完成。

例子:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 5
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4   

可以看到,这个 Job 会一直执行到达到 5 次比赛为止,如果名字没有附加随机后缀是不可能的。查看示例的Job执行结果:

$ kubectl get pods 
NAME                            READY   STATUS      RESTARTS   AGE

pi-7mx4k                        0/1     Completed   0          3m9s
pi-bfw6p                        0/1     Completed   0          3m17s
pi-ls9lh                        0/1     Completed   0          3m43s
pi-njfpq                        0/1     Completed   0          3m35s
pi-ssn68                        0/1     Completed   0          3m27s

因此,您的问题的答案是否定的,您不能强迫它使用“固定”名称。

如果您需要在名称下进行控制,请考虑改用 Pod(种类 Pod)。


推荐阅读