我们在kubernetes集群中的pods中运行python服务。服务被设置为从环境变量接收其日志级别。这些环境变量是在gitlab管道中的服务部署期间设置的。出于调试目的,我希望能够只更改单个pod上的env var并重新启动它,而不必从gitlab重新部署服务。在
在我们搬到kubernetes之前,我们在rancher中运行容器,在这里所描述的更改在GUI中非常容易实现。更改环境变量->点击更新->容器自动重新启动。在
我发现this article建议使用如下命令更改副本集
kubectl set env rs [REPLICASET_NAME] [ENV_VAR]=[VALUE]
然后终止pod,之后将使用相应的env var重新创建它。在
但它也表明
Never do it on a production system.
Never even do this on a dev environment without taking care in how it may impact your deployment workflow.
这是实现我的目标的唯一/最好的方法吗?为了调试目的,快速更改正在运行的pod中的env var?在
简单回答:是的。在
长话短说:我从未使用过或阅读过Rancher,但我怀疑它也在更改复制集或部署模板env var,从而触发了Pod更新。这真的是唯一能改变吊舱中环境变量的方法。你不能改变正在运行的容器或运行的吊舱上的环境变量。在Docker容器中不能这样做,在Kubernetes中也不能这样做,所以我假设在Rancher中也不能这样做。只能重新启动具有不同规格的机架
为什么?在
因为容器只是在主机上运行的进程。一旦进程启动,没有resorting to nasty hacks就不可能更改进程的环境。在
如果你只关心那些声明在dev或prod中不要这样做的警告,我会说同样的警告也适用于你所描述的牧场主工作流,所以如果你愿意在那里冒险,这里也不会有任何不同。在
相关问题 更多 >
编程相关推荐