【问题标题】:In Kubernetes, how to wait for a pod to finish deleting before starting new one在 Kubernetes 中,如何等待一个 pod 完成删除后再开始新的
【发布时间】:2020-08-10 07:59:07
【问题描述】:

我有一个部署,我一次只需要启动一个实例。当优雅地关闭 pod 时,另一个会立即启动——无需等待 pod 完成退出。如何确保在新 pod 启动之前正常删除的 pod 完全消失?

我尝试过的事情: 1. maxSurge: 0 和 maxUnavailable: 1 滚动更新

  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

结果:优雅删除 pod 时,立即启动另一个实例,所以有两个 pod 同时运行,貌似忽略了 maxSurge 值。

  1. 与 1 相同,但使用百分比而不是整数

  2. 使用重新创建而不是滚动更新

strategy:
    type: Recreate

结果:同 1

有没有办法直接在 Kubernetes 中获得所需的行为,或者你必须做一些事情,比如添加一个延迟的 init 容器等?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    使用StatefulSets

    StatefulSets are valuable for applications that require one or more of the following.
    
     - Stable, unique network identifiers. 
     - Stable, persistent storage.
     - Ordered, graceful deployment and scaling. 
     - Ordered, automated rolling updates.
    

    【讨论】:

      【解决方案2】:

      当优雅地删除 pod 时,另一个实例会立即启动

      重新创建部署仅在部署升级期间等待旧版本终止。除了部署升级,不能保证一致性。

      参考:https://github.com/kubernetes/kubernetes/issues/27362#issuecomment-524664492

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-17
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 2020-04-14
        • 2013-06-15
        • 1970-01-01
        相关资源
        最近更新 更多