K8S的的deployment里面的env进行设置
方案一(最快、最常用):kubectl set env 直接热修改 ⭐⭐⭐⭐⭐
👉 不需要保存 / 编辑 yaml 文件
直接执行(强烈推荐你现在就用)
kubectl set env deployment/<deployment-name> \
JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
如果你在指定 namespace:
kubectl -n <namespace> set env deployment/<deployment-name> \
JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
效果
- Deployment 立刻更新
- Pod 会 滚动重启
- 参数持久化在 Deployment 中(不是临时)
验证
kubectl exec -it pod -- java -XshowSettings:properties -version 2>&1 | grep timezone
看到:
user.timezone = Asia/Shanghai
👉 问题当场解决
方案二(也很稳):kubectl patch(不用编辑器)
如果你连 set env 都用不了,用 patch 👇
kubectl patch deployment <deployment-name> \
-p '{"spec":{"template":{"spec":{"containers":[{"name":"<container-name>","env":[{"name":"JAVA_OPTS","value":"-Duser.timezone=Asia/Shanghai"}]}]}}}}'
📌 适合 权限比较严格的环境
方案三(兜底):临时验证用(不推荐长期)
⚠️ 只用于验证,不作为最终方案
kubectl exec -it pod -- \
java -Duser.timezone=Asia/Shanghai -jar xxx.jar
❌ Pod 一重建就没
❌ 只能证明“问题是不是时区”
🔍 你可以先自查:为什么保存不了 Deployment
常见 4 种原因(你看命中哪一个):
| 现象 | 原因 |
|---|---|
vim 保存失败 |
只读文件系统 |
kubectl edit 退出不生效 |
RBAC 没有 update 权限 |
| 文件在 Git 仓库 | 只能走 CI/CD |
| YAML 被平台接管 | 腾讯云 / 蓝盾 / Argo |
✅ 我给你的最现实建议(结合你现在情况)
先用
kubectl set env把问题止血
再慢慢走规范流程(Git / CI / 运维平台)
这是线上排障的标准姿势,一点都不丢人。
📌 最少操作清单(你可以直接照抄)
kubectl set env deployment/<deployment-name> \
JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
kubectl rollout status deployment/<deployment-name>
kubectl exec -it pod -- java -XshowSettings:properties -version 2>&1 | grep timezone
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: