kubernetes - Kubernetes 滚动部署:仅在没有容器运行时终止 pod
问题描述
我正在尝试将更新部署到 pod。但是,我希望当前的 pod 仅在 pod 内的所有容器都已终止并且它们的进程完成时才终止。
新 pod 可以一直等待启动,直到旧 pod 中的所有容器都完成。我们有一种机制可以阻止旧 pod 接收新任务,因此它们最终应该终止。
如果在某个时间实例存在两次 pod 也没关系。我尝试在 kubernetes 文档中找到解决方案,但没有成功。关于如何/是否可能的指针会有所帮助。
解决方案
好吧,我想您可能必须根据需要创建具有新映像的重复部署类型,并将服务中的选择器更改为新部署,这将防止外部流量进入预先存在的 pod,并且新调用可以转到新的 pod。然后稍后你可以检查类似的东西 -
Kubectl top pods -c containers
如果负载看起来是静态且低的,那么您最好稍后删除旧的 pod 相关部署。
但是对于这个事情,每次必须更新服务选择器并且可能为了跟踪事情,您可以将 git commit 哈希附加到服务选择器以保持它每次都是唯一的。
但是如果需要从 Kubernetes 集群内部回滚到以前的版本将很困难,因此最好您可以再次触发所需的构建。
我希望这是有道理的!
推荐阅读
- javascript - React Carousel renderArrow consts 未定义
- login - Yii2 登录验证密码失败
- ms-access - 使用权。如果记录为空,我该如何更改?
- swift - 使用 RxSwift 联网
- google-colaboratory - Google Colab - 如何使用代码重新启动运行时?
- vuetify.js - Vuetify 嵌套列表默认关闭
- python - Numpy 矩阵模索引提取
- node.js - 错误:在中间件中发送标头以进行 joi 验证后无法设置标头
- c# - json.net 反序列化返回 null
- jquery - $.ajax 调用未设置带有 crossDomain 和 xhrFields.withCredentials 的 cookie 设置为 true