gpt4 book ai didi

kubernetes - 将单独的环境变量传递给 statefulset pod

转载 作者:行者123 更新时间:2023-12-05 08:48:01 46 4
gpt4 key购买 nike

我正在部署两个作为无外设服务运行的相同图像的 statefulset pod。我希望将单独的 env 变量传递给在 statefulset pod 中运行相同图像的容器。谁能告诉我如何实现这一目标?

最佳答案

不可能将相同环境变量的不同值暴露给 Statefulsets 的不同容器作为 Statefulsets 中的 pod是同一应用程序的相同副本。

来自docs :

Like a Deployment, a StatefulSet manages Pods that are based on anidentical container spec. Unlike a Deployment, a StatefulSet maintainsa sticky identity for each of their Pods. These pods are created fromthe same spec, but are not interchangeable: each has a persistentidentifier that it maintains across any rescheduling.

但是,如上述文档所述,由于 Statefulset 的每个 pod 都有粘性标识,您可以使用它向 pod 传递相同的环境变量集,并根据不同的标识使用不同的环境变量采取适当的操作 pod 。

您可以通过 Downward API 通过环境变量将 pod 名称公开给容器并在脚本中使用它来采取适当的行动:

env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: env0
value: value0
- name: env1
value: value1

因此,如果您有两个名为 myappStatefulset 副本,那么 Pod 的名称将分别为 myapp-0myapp-1 然后您可以使用基于 pod 名称的环境变量(env0 如果 pod 名称是 myapp-0env1 如果 pod 名称是 myapp-1)。

注意:虽然该解决方案可行,但它不应该是首选,我们应该根据用例使用单独的 statefulsets 对象来公开不同的环境变量。

关于kubernetes - 将单独的环境变量传递给 statefulset pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66667312/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com