kubernetes - 在不中断服务的情况下重新创建部署
问题描述
在以下创建新部署的场景中:
kubectl apply -f deployment.yaml
/Mugen$ kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
my-server 1 1 1 1 1h
我正在更改yaml
并再次运行apply
,并收到一条消息,表明部署已更新。
但随后我看到了两个用于我的部署的 pod,并表明有两个实例,而只有一个是最新的。
/Mugen$ kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql-server 1 2 1 2 1h
据我了解,如果我使用过,kubectl replace --force
我实际上会删除当前部署并创建一个新部署。
但是,这将导致服务中断。
是否有正确的方法来创建新部署并仅在成功推出后删除以前的部署?
解决方案
优雅地排空所有 pod(然后删除 pod)并继续添加具有新功能的新 pod。
请注意,在生产设置中,不建议重新创建为部署策略,因为这可能会导致停电和服务中断。或者,您可能还想阅读有关不同部署策略的更多信息,例如 Canary Release(另请阅读有关蓝/绿)和/或用于生产管理的 RollingUpdate。
推荐阅读
- javascript - 即使发生错误,尝试 catch 也不起作用
- wordpress - 在添加自定义帖子类型表单中验证 Wordpress 随机数
- c++ - 我需要知道如何正确计算平均值和偏差
- dynamics-crm - 在 openlayers 集成中使用标记放大/缩小时 UI 被阻止
- php - Laravel Form Request 正则表达式规则的自定义错误消息
- javascript - 将 tui 图像编辑器画布写入服务器
- nestjs - 如何让 EventPattern 在 Nest JS 中工作
- c - 多个 for 循环取决于条件
- matlab - 有没有更好的方法来绘制数组?
- javascript - 每次输入字符时输入表单失去焦点