kubernetes - 什么是每次部署运行一次的 initContainer/job 的正确替代品?
问题描述
每次将配置应用到 Kubernetes 时,我都需要运行一次作业。我尝试使用作业,但它不允许更新图像版本并且需要删除以前的作业。我尝试使用 initContainer ,但它似乎有点矫枉过正,因为我不需要每次启动 pod 时都运行它。本质上,我使用单个 pod 进行了简单的部署,并且每次我在部署中更新映像时都需要在部署发生之前运行一项作业,并且混淆了实现它的最佳方法是什么。工作似乎很适合这个,但问题是我不能第二次提交相同的配置并更新工作的图像标签。
解决方案
恐怕没有其他选择。我最近遇到了类似的情况,这就是我正在做的工作娱乐:
kubectl get <job name> -o json | \
jq -r '.metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"' | \
kubectl replace --save-config --force -f -
它使用"kubectl.kubernetes.io/last-applied-configuration"
注释,该注释包含应用的初始作业配置,没有自动生成/集群字段。然后kubectl replace
将完全用自己的副本替换当前的,模拟您正在寻找的“重新运行”。
然后,您可以在kubectl replace
.
推荐阅读
- amazon-emr - Emr 引导脚本文件位置
- c# - String.Split 结果问题
- sql - 使用创建的 GUID 将 csv 导入 sql
- odata - 通过 Web API 在 Dynamics 中查找选项列表值
- linux - 在远程服务器上执行 Shell 脚本 :: Gives sqlplus: command not found
- javascript - 如何使用 IONIC 获取 IOS/Android 存储信息?
- ms-access - Access 2013 自动删除查询中的特定记录
- java - 从范围生成日期
- node.js - NODE JS - 请求 npm - 操作 url 正文
- jquery - 使用括号将外部 HTML 文件加载到 div 中