需要将部署名称传递到相关的Pod

时间:2019-10-30 14:44:51

标签: kubernetes openshift kubernetes-pod

我有一个包含nodejs应用程序的docker镜像,我通过kubernetes部署进行了部署,我有3个Pod。我需要将每个部署的名称传递给相关的Pod,这样,我为每个部署都有一个唯一的ID,该ID仅对该部署唯一,并且该部署中的所有Pod都可以使用该ID。 同样,这并没有太大帮助:

Kubernetes deployment name from within a pod?

我知道我可以在以下方面做到这一点:

env:
  - name: unique id
    value: {{uuidv4}}

但我希望以下内容:

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

知道它是否可以实现吗?

1 个答案:

答案 0 :(得分:1)

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

  

通过更新PodTemplateSpec声明Pod的新状态   部署。创建一个新的ReplicaSet并由Deployment管理   将Pod从旧的ReplicaSet移至新的Pod   率。每个新的ReplicaSet都会更新Deployment的修订版本。

因此,除非您要回滚,否则了解部署并不重要。因此,您需要的是让豆荚彼此见面。在这种情况下,您需要无头的服务。

https://dev.to/kaoskater08/building-a-headless-service-in-kubernetes-3bk8

您可以在其中获得pod DNS并通过IP或DNS在Redis中对其进行标记

编辑:

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

HOSTNAME=stella-api-8675fcf6df-rm2m7

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

希望这会有所帮助。