python - 如何临时更改 kubernetes pod 的环境变量?
问题描述
我们在 kubernetes 集群的 pod 中运行 python 服务。这些服务设置为从环境变量接收它们的日志级别。这些环境变量是在 gitlab 管道中部署服务期间设置的。出于调试目的,我希望能够仅更改单个 pod 上的 env var 并重新启动它,而无需从 gitlab 重新部署服务。
在我们迁移到 kubernetes 之前,我们在 Rancher 中运行我们的容器,所描述的更改在 GUI 中很容易完成。更改 env var -> 点击更新 -> 容器自动重启。
我发现这篇文章建议使用类似的命令更改副本集
kubectl set env rs [REPLICASET_NAME] [ENV_VAR]=[VALUE]
然后终止 pod,之后将使用相应设置的 env var 重新创建它。
但它也指出
永远不要在生产系统上这样做。
永远不要在开发环境中执行此操作,而不注意它可能如何影响您的部署工作流程。
这是实现我在正在运行的 pod 中快速更改 env var 以进行调试的目标的唯一/最佳方法吗?
解决方案
这是实现我在正在运行的 pod 中快速更改 env var 以进行调试的目标的唯一/最佳方法吗?
简短的回答:是的。
长答案:我从未使用或阅读过 Rancher,但我怀疑它也在更改 ReplicaSet 或 Deployment 模板 env var,从而触发了 Pod 更新。这确实是在 Pod 中更改环境变量的唯一方法。您无法更改正在运行的容器或正在运行的 Pod 上的环境变量。你不能在 Docker 容器中这样做,你不能在 Kubernetes 中这样做,所以我假设你不能在 Rancher 中这样做。您只能重新启动具有不同规格的 Pod。
为什么?
因为容器只是在主机上运行的进程。一旦进程启动,就不可能在不求助于讨厌的黑客的情况下改变进程的环境。
如果您只是担心在 dev 或 prod 中不执行此操作的警告,我会说相同的警告适用于您描述的 Rancher 工作流程,因此如果您愿意在那里承担风险,它不会在这里有什么不同。
推荐阅读
- github - Github 上的 Jupyter Notebook Markdown Latex
- slurm - Slurm 交互模式 - 在开始时运行预先指定的命令
- spring-boot - Spring标准查询多对多关系
- python - 在 matplotlib 中拟合一条特定斜率的线
- ios - 是否可以在原生 iOS 中使用 Gif 动画?
- javascript - 如何用 JavaScript 语言预测时间中的一个变量或多个变量?
- c - 我什么时候应该使用malloc?
- sql - Summarise data by date with percentages using SQL PIVOT
- node.js - 从 mlab 迁移到 mongoDB atlas 后,MongoDB 查询返回 null,即使它在集合中可用
- javascript - 如果某事物是数字,如何从提示中获取用户输入以签入 while 循环?