我有一个包含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
知道它是否可以实现吗?
答案 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
希望这会有所帮助。