在Kubernetes中,如何在开始新的pod之前等待pod完成删除

在Kubernetes中,如何在开始新的pod之前等待pod完成删除,kubernetes,Kubernetes,我有一个部署,一次只需要一个实例。当优雅地关闭pod时,另一个pod会立即启动,而无需等待pod完成退出。我如何确保在新pod启动之前,优雅删除的pod完全消失 我尝试过的事情: 1.使用maxSurge:0和maxUnavailable:1滚动更新 strategy: rollingUpdate: maxSurge: 0 maxUnavailable: 1 type: RollingUpdate 结果:当优雅地删除pod时,另一个实例立即启动,因此

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

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

  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
结果:当优雅地删除pod时,另一个实例立即启动,因此有两个pod同时运行,似乎忽略了maxSurge值

  • 与1相同,只是使用百分比而不是整数

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

  • 结果:与1相同

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

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

    重新创建部署仅在部署升级期间等待旧版本的终止。除部署升级外,它无法确保一致性

    参考:使用

    strategy:
        type: Recreate
    
    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.