Kubernetes helm中是否有任何变量可用于获取当前副本周期值?

Kubernetes helm中是否有任何变量可用于获取当前副本周期值?,kubernetes,deployment,kubernetes-helm,replicaset,Kubernetes,Deployment,Kubernetes Helm,Replicaset,helm中是否有任何变量可用于获取当前副本周期值?我希望通过在values.yaml of helm中公开replicacount值来增加部署的replicacount。使用此选项,我们需要为每个副本更新一个参数 在我们的yaml“serverName”中有一个参数,我们需要为每个副本更改它的值,如 服务器名:“服务器” 然后我们需要向每个复制副本(0、1、2)传递诸如“server-0”、“server-1”、“server-2”之类的值 有什么办法吗?没有,您不能为每个副本传递不同的值 为什

helm中是否有任何变量可用于获取当前副本周期值?我希望通过在values.yaml of helm中公开replicacount值来增加部署的replicacount。使用此选项,我们需要为每个副本更新一个参数

在我们的yaml“serverName”中有一个参数,我们需要为每个副本更改它的值,如 服务器名:“服务器” 然后我们需要向每个复制副本(0、1、2)传递诸如“server-0”、“server-1”、“server-2”之类的值


有什么办法吗?

没有,您不能为每个副本传递不同的值

为什么??因为它在:

副本:对象的精确副本

复制副本是一个精确的副本,因此您不能以任何方式使它有所不同。库伯内特斯不会帮你的

回答你的另一个问题:

如何获取当前副本计数?我想通过公开replicacount值来增加部署的replicacount

库伯内特斯适用。您可以声明需要多少个复制副本,并尽可能与之匹配。你不需要知道你的当前计数来放大或缩小它(至少我知道你正试图根据你的问题这样做)


只需将replicacount变量放入values.yaml文件中,并在helm图表中引用它。这很简单。

如果应用程序代码查看自己的主机名(如shell
hostname
命令或C
gethostname
函数),它将是当前pod的名称。这在每个复制副本中都是唯一的

如果检查主机名对代码不方便,还可以使用将pod名称作为环境变量注入(直接从链接的Kubernetes文档复制的示例):

env:
-姓名:我的名字
价值来源:
fieldRef:
fieldPath:metadata.name
如果不使用init容器或entrypoint脚本,就无法将这些数据注入到文件中。Kubernetes必须注入文件的机制(例如)只注入固定的文件内容,并且在所有副本中始终相同

如果您特别需要名称按您建议的顺序排列,或者需要重新使用名称来恢复存储,a将生成与此完全相同的pod名称(它还可以自动分配存储,并按特定顺序启动pod)


在Helm中没有任何东西可以让您对每个副本有不同的配置。它的模板将帮助您构造StatefulSet/Service/ConfigMap/…的名称和内容。。。对象,但一旦您创建了这些对象,创建单个吊舱的Kubernetes控制器仍然以相同的方式工作,并且仍然以相同的行为创建一些基本相同的吊舱。

Hi Ankit,欢迎使用Stack Overflow。您是否介意添加问题的详细信息,例如您正在使用的图表或图表中的模板文件?