在不中断服务的情况下重新创建部署

时间:2019-01-20 11:07:25

标签: kubernetes kubectl kubernetes-deployment

在以下创建新部署的情况下:

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,我实际上将删除当前部署并创建一个新部署。

但是,这将导致服务中断。

是否有适当的方法来创建新的部署并仅在成功部署后删除先前的部署?

1 个答案:

答案 0 :(得分:2)

优雅地耗尽所有Pod(然后删除Pod),并继续添加具有新功能的新Pod。

请注意,在生产设置中,建议不要按部署策略进行重新创建,因为这可能会导致停电和服务中断。另外,您可能还想了解有关不同部署策略的更多信息,例如Canary Release(也了解Blue / Green)和/或RollingUpdate来进行生产管理。