我可以在不使用Kubernetes重新启动Pod的情况下修改容器的环境变量吗

Luc*_*nda 8 kubernetes

我有一个运行中的Pod,我想更改其中一个容器的环境变量并使它立即工作。我能做到吗?如果可以的话,该怎么做?

Rad*_*nka 12

简单地说,用 kube 术语来说,你不能。

linux进程的环境是在进程启动时建立的,当然没有kube工具可以达到这样的目的。例如,如果您对 Deployment 进行更改(我假设您使用它来创建 pod),它将滚动底层 pod。

现在,也就是说,在有没有办法更改 Unix 中另一个进程的环境变量?涉及使用 GDB

另外,请记住,即使您可以这样做,仍然有应用程序逻辑需要注意此类更改,而不是像现在一样,只是在启动期间评估来自 envs 的配置。


tba*_*ack 10

我不知道有什么方法可以做到这一点,而且我想不出在现实世界中这有多大意义。

通常,您必须重新启动进程才能注意到更改的环境变量,最简单的方法是重新启动 pod。

最接近您想要的解决方案是创建部署,然后使用kubectl edit ( kubectl edit deploy/name) 修改其环境变量。保存后,将启动一个新 Pod,并终止旧 Pod。


Ahm*_*awy 7

这对我有用

kubectl set env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N

此处查看官方文档

运行时 Pod 的另一种方法,您可以获取 Pod 命令行并更改运行时中的变量 RUN kubectl exec -it <pod_name> -- /bin/bash Then Runexport VAR1=VAL1 && export VAR2=VAL2 && your_cmd