K8s运维:临时给某个容器增加env
可以用命令给某个deployment的container增加环境变量吗?
可以,而且非常方便!Kubernetes 专门提供了一个 kubectl set env 命令,让你无需手动修改 YAML 文件,就能直接在终端热更新 Deployment 的环境变量。
以下是具体的命令语法和常见用法:
1. 基础语法
Bash
kubectl set env deployment/<deployment名称> <key>=<value> -n <命名空间>
举个例子:
如果你想给命名空间 tsysmart-test 下的 app-manage-server 增加一个环境变量 ENV_TYPE=test:
Bash
kubectl set env deployment/app-manage-server ENV_TYPE=test -n tsysmart-test
2. 高级常用操作
💡 同时增加/修改多个环境变量
直接在后面用空格隔开,连着写即可:
Bash
kubectl set env deployment/app-manage-server ENV_TYPE=test DEBUG_MODE=true -n tsysmart-test
💡 如果 Deployment 里面有多个容器(Container)
默认情况下,该命令会给该 Deployment 下的所有容器都加上这个环境变量。如果你只想给其中某一个特定的容器加,可以用 --containers 参数指定:
Bash
kubectl set env deployment/app-manage-server ENV_TYPE=test --containers="app-container" -n tsysmart-test
💡 如何删除刚刚加的环境变量?
在变量名后面加上一个减号 -(不需要写值),就能把它删掉:
Bash
kubectl set env deployment/app-manage-server ENV_TYPE- -n tsysmart-test
⚠️ 注意事项(运维小贴士)
- 触发滚动更新:当你执行
kubectl set env成功后,Kubernetes 会立刻触发该 Deployment 的滚动更新(Rolling Update)。它会创建新的 Pod,等新 Pod 起来后再销毁旧的 Pod。因此,如果是生产环境,请在低峰期操作。
验证是否生效:
命令执行完后,你可以通过以下命令查看容器里的环境变量是否真的变了:Bash
kubectl describe deployment/app-manage-server -n tsysmart-test | grep -A 5 Environment