【问题标题】:How to delay the new pod creating in a deployment when delete one pod?删除一个 pod 时如何延迟部署中的新 pod 创建?
【发布时间】:2020-04-20 09:33:29
【问题描述】:

如果一个部署设置replica为2,那么我们使用“kubectl delete pods”命令删除一个pod,那么旧的pod会处于“terminating”状态,新的pod就会出来。

所以,我希望在旧的pod终止成功后,新的pod开始创建,那么,我该怎么办呢?

【问题讨论】:

    标签: deployment kubectl


    【解决方案1】:

    您可以使用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,例如maxSurgemaxUnavailable

    • (不太推荐)将grace-period=0force 参数一起使用,但可能会导致不一致或数据丢失,需要确认。更多详情herehere

    如果有帮助,请告诉我。

    【讨论】:

    • 您好 OhHiMark,感谢您的回复,很遗憾看到即使我们使用等待命令,新的 pod 仍然会立即转出。 wait 命令只等待旧 pod 的条件,而不是新 pod,对吧?
    • 在给定的示例中:是的。你能检查一下你的标准输出吗?条件是否成功满足?
    猜你喜欢
    • 2019-07-16
    • 2017-04-02
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多