Kubernetes 需要将部署名称传递给相关POD

Kubernetes 需要将部署名称传递给相关POD,kubernetes,openshift,kubernetes-pod,Kubernetes,Openshift,Kubernetes Pod,我有一个docker映像,其中包含一个nodejs应用程序,我通过kubernetes部署了它,我有3个吊舱。我需要的是将每个部署的名称传递给相关的POD,这样我就为每个部署都有一个唯一的id,该id仅对该部署是唯一的,并且该部署中的所有POD都可以使用该id。 这一条也没有多大帮助: 我知道,事实上,我可以在以下方面做到: env: - name: unique id value: {{uuidv4}} 但我更希望: env: - name: deployment name

我有一个docker映像,其中包含一个nodejs应用程序,我通过kubernetes部署了它,我有3个吊舱。我需要的是将每个部署的名称传递给相关的POD,这样我就为每个部署都有一个唯一的id,该id仅对该部署是唯一的,并且该部署中的所有POD都可以使用该id。 这一条也没有多大帮助:

我知道,事实上,我可以在以下方面做到:

env:
  - name: unique id
    value: {{uuidv4}}
但我更希望:

env:
  - name: deployment name
    value: a way to get the deployment name

知道它是否可以实现吗?

因此,从Kubernetes部署文档来看,一个用例是:

通过更新的PodTemplateSpec声明POD的新状态 部署。将创建一个新的复制集,并对部署进行管理 以受控的速度将吊舱从旧的复制集移动到新的复制集 比率。每个新的复制集都会更新部署的版本

因此,除非您想回滚,否则了解部署是不相关的。所以你需要的是让豆荚互相看见。在这种情况下,您需要无头服务

在那里,您可以获得pod DNS,并通过IP或DNS在您的Redis中标记它们

编辑:

为了获得部署,每个pod都有一个名为HOSTNAME的环境变量,例如(在我的环境中):

其中,stella api是当前部署名称,stella-api-8675fcf6df是当前副本集,最后,stella-api-8675fcf6df-rm2m7将是pod特定id


希望这能有所帮助。

你需要更具体一点,为什么你需要pod id,你是在尝试pod相互连接来做什么吗?@paltaa实际上我使用redis,在每次部署中指定一个pod作为领导者,并在redis中跟踪领导者id。一个新的部署领导应该被分配一个新的id。@paltaa另外值得注意的是,我不是在寻找pod名称,而是在寻找部署名称,因为我需要查看出现的pod是否与旧部署或新部署相关。@paltaa因此每个部署将创建3个pod,代码将抓取部署pod,并将其中一个pod分配为领导并保留在RedisThank中跟踪它,因此如果我没有弄错,就无法获得副本集的名称,对吗?@Learner Edited得到了您的答案谢谢更新,这非常有帮助。因此,为了传递主机名a和环境变量,我应该这样做吗?{{HOSTNAME}}HOSTNAME是每个pod上的一个env变量,如果仔细查看,它就是pod的名称,因此只需解析pod name HOSTNAME是pod的一个环境变量,就可以使用nodejs包dotenv访问它
HOSTNAME=stella-api-8675fcf6df-rm2m7