指一个service下有多个Pod,更新时每次只更新一部分
滚动升级可以达到无感知升级部署,但因为滚动过程中会出现新旧pod同时存在的时刻,所以不保证数据一致性
关键字:
- minReadySeconds:
- 容器启动后多久开始提供服务,假设服务启动需要10秒-20秒,我们为了避免服务启动期间有流量过来,可以设置为30秒
- maxSurge:
- 升级过程中允许比预设POD数量多出的数量,例如MaxSurges=1,replicas=5,则更新时最多会同时存在Running状态的POD最大6个
- maxUnavaible:
- 升级过程中允许最多有多少个POD处于无法提供服务的状态,当maxSurge不为0时,该值也不能为0,最好和maxSurge保持一致。
假设配置如下:
maxSurge=2、maxUnavaible=2、replicas=4
此时升级会出现8个POD,4个Running、2个ContainerCreating、2个Terminating,然后逐渐递减,Running状态最多会出现6个。
示例:
spec:
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1