【发布时间】:2020-04-20 09:33:29
【问题描述】:
如果一个部署设置replica为2,那么我们使用“kubectl delete pods”命令删除一个pod,那么旧的pod会处于“terminating”状态,新的pod就会出来。
所以,我希望在旧的pod终止成功后,新的pod开始创建,那么,我该怎么办呢?
【问题讨论】:
标签: deployment kubectl
如果一个部署设置replica为2,那么我们使用“kubectl delete pods”命令删除一个pod,那么旧的pod会处于“terminating”状态,新的pod就会出来。
所以,我希望在旧的pod终止成功后,新的pod开始创建,那么,我该怎么办呢?
【问题讨论】:
标签: deployment kubectl
您可以使用wait 命令:
等待一个或多个资源的特定条件。
该命令占用多个资源并等待直到指定 在每个给定资源的状态字段中都可以看到条件。
或者,该命令可以通过将“delete”关键字作为值来等待给定的资源集被删除 --for 标志。
这是一个例子:
发出“delete”命令后,等待 pod“busybox1”被删除,超时 60 秒:
kubectl delete pod/busybox1
kubectl wait --for=delete pod/busybox1 --timeout=60s
---编辑---
根据您的用例,其他选项将是:
将StatefulSet 与“有序、优雅的部署和扩展”结合使用。
将副本设置为 1,等到第二个 pod 终止,然后将其设置回 2
使用额外的deployment configuration,例如maxSurge 和maxUnavailable
(不太推荐)将grace-period=0 与force 参数一起使用,但可能会导致不一致或数据丢失,需要确认。更多详情here 和here。
如果有帮助,请告诉我。
【讨论】: