gpt4 book ai didi

kubernetes - k8s-通过配置映射更新触发新Pod创建

转载 作者:行者123 更新时间:2023-12-02 12:17:03 25 4
gpt4 key购买 nike

我有一个部署,通过配置映射为pod设置env变量。

    envFrom:
- configMapRef:
name: map

我的配置图将如下所示
apiVersion: v1
data:
HI: HELLO
PASSWORD: PWD
USERNAME: USER
kind: ConfigMap
metadata:
name: map

所有的Pod都从map设置了这些env变量。现在,如果我更改配置映射文件并应用- kubectl apply -f map.yaml,则会得到 map is configured的确认。但是,它不会使用更新的环境变量触发新的Pod创建。

有趣的是,这一作品
kubectl set env deploy/mydeploy PASSWORD=NEWPWD
但是不是这个
kubectl set env deploy/mydeploy --from=cm/map

但是我正在寻找通过配置映射更新环境变量来创建新Pod的方法!

最佳答案

Interestingly this one works

kubectl set env deploy/mydeploy PASSWORD=NEWPWD

But not this one

kubectl set env deploy/mydeploy --from=cm/map



这是预期的行为。您的Pod list 未在第二个命令中更改(使用 cm时),这就是Kubernetes不重新创建它的原因。

有几种解决方法。基本上,您可以做的是每次ConfigMap更改时人为更改Pod list ,例如使用ConfigMap内容的sha256sum向Pod添加注释。这实际上是Helm建议您执行的操作。如果您使用 Helm ,则可以通过以下方式完成:
kind: Deployment
spec:
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]

从这里: https://github.com/helm/helm/blob/master/docs/charts_tips_and_tricks.md#automatically-roll-deployments-when-configmaps-or-secrets-change

只需确保将注释添加到Pod(模板)对象,而不是Deployment本身即可。

关于kubernetes - k8s-通过配置映射更新触发新Pod创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55293013/

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