Kubernetes 不同的升级策略是如何影响服务质量 QoS 的

Deployments#Strategy - Kubernetes

无论采取哪种升级方式, 都应该在容器中使用 probe , 降低业务抖动

Pod 升级策略 .spec.strategy.type 有两种方式可选:

  1. RollingUpdate : 滚动升级.

    • .spec.strategy.rollingUpdate.maxUnavailable 最大不可用 , 默认 25% , 即升级期间, 总容器数量为 100%。 循环 删旧扩新
    • .spec.strategy.rollingUpdate.maxSurge 最大弹性, 默认 30% , 即升级期间, 总容器数量不超过 130%。 循环 扩新删旧
  2. Recreate : 重建, 即先删除老的容器再运行新的容器

    • 常用于有限资源的 Pod 上, 比如 GPU

升级过程中的 QoS

strategy 的 三种规则, 其实也是服务 QoS 的体现。

  1. RollingUpdate
    • maxSurge : 实际上是服务的最高保障, 在升级过程中, 最大可用容器数量始终为 100%, 保证了服务在升级过程中的业务承载能力。
    • maxUnavailable : 次高保障。 在升级过程中, 由于会有(默认 25%) 部分 POD 先被关闭,因此服务最高承载能力实际上是被削减了的。 maxUnavailable 的比例也到, 承载能力削减越重。

maxSurgemaxUnavailbable 的选型方法。
1. 业务特别重要, 不接受性能抖动。 优先选择 maxSurge。 使用资源换取稳定性。 2. 业务允许接受抖动资源不是特别充裕 , 可以选择 maxUnavailable 。 使用稳定性换取资源。

  1. Recreate : 最低保障。 容器会全部全部关闭再启动。 适用于资源紧张且服务不那么重要的场景。