.spec.strategy
策略指定用于用新 Pods 替换旧 Pods 的策略。 .spec.strategy.type
可以是 “Recreate” 或 “RollingUpdate”。“RollingUpdate” 是默认值。
Recreate
如果.spec.strategy.type==Recreate
,在创建新 Pods 之前,所有现有的 Pods 会被杀死。
RollingUpdate
如果.spec.strategy.type==RollingUpdate
时,采取 滚动更新的方式更新 Pods。可以指定 maxUnavailable
和 maxSurge
来控制滚动更新过程:
MaxSurge:指出了我们在滚动更新时,可以有多少个额外的 Pod;
MaxUnavailable:则代表在滚动更新时,我们可以忍受多少个 Pod 无法提供服务。
这两个参数可以是 Pod 数量,也可以是 Deployment 的实例数量百分比;两个参数都可以设置为 0(但是不能同时为 0)。pod数在replicas-MaxUnavailable 至 replicas+MaxSurge 之间。
MaxUnavailable 设置为 0 意味着:“在新 Pod 启动并就绪之前,不要关闭任何旧 Pod”。
MaxSurge 设置为 100% 的意思是:“立即启动所有新 Pod”,也就是说我们有足够的资源,我们希望尽快完成更新。
这两个参数的默认值都是 25%,如果我们更新一个 100 Pod 的 Deployment,会立刻创建 25 个新 Old,同时会关闭 25 个旧 Pod。
每次有 Pod 启动就绪,就可以关闭旧 Pod。每次有旧 Pod 完成关闭过程(释放资源),就可以创建另一个新 Pod 了。