在Kubernetes (k8s) 中,Deployment 的升级策略主要指的是在更新 Pod 副本以部署新的容器镜像或配置时所采用的方法。主要有两种内置的升级策略:
- 滚动更新(RollingUpdate):
- 这是 Deployment 默认使用的升级策略。
- 在滚动更新中,Deployment 控制器会按批次替换现有的 Pod,每次只替换一部分(由
.spec.strategy.rollingUpdate.maxUnavailable
和maxSurge
控制),确保在升级过程中始终有一定数量的可用Pod服务于客户端请求,从而实现*乎*滑的服务过渡。 - 用户可以自定义每次升级时最多可以同时不可用的Pod数量以及一次可以额外创建的新Pod数量。
- 重启升级(Recreate):
- 当
.spec.strategy.type
设置为Recreate
时,Deployment 将采取这种策略。 - 使用此策略时,Deployment 先会停止所有旧的 Pod 副本,等到所有旧副本都终止后,再一次性创建出新的 Pod 副本。
- 此策略会导致服务中断,因为新旧Pod会在一段时间内没有同时在线,适用于能够容忍短暂服务不可用或无状态的应用程序。
综上所述,虽然不是严格意义上的升级策略,但在进行实际升级操作时,还可以选择临时暂停升级(Pause),这允许用户通过设置 .spec.paused
为 true
来暂停一个正在进行的Deployment升级,以便在特定条件下恢复升级过程。