date: 2020-06-28title: k8s之部署策略strategy配置 #标题
tags: #标签
categories: k8s # 分类

通过 Deployment 中 .spec.strategy 字段,可以指定使用 RollingUpdate(滚动更新) 的部署策略(默认为滚动更新策略)还是使用 Recreate (重新创建)的部署策略。
关于部署策略相关字段及配置含义如下:

yaml文件中示例:

  1. # 滚动更新yaml文件示例(推荐使用滚动更新)
  2. strategy:
  3. rollingUpdate:
  4. maxSurge: 25%
  5. maxUnavailable: 25%
  6. type: RollingUpdate
  7. # 重建更新yaml文件示例(不推荐):
  8. strategy:
  9. type: Recreate
  10. # 重建更新不支持maxSurge、maxUnavailable参数,因为此策略是将原有pod删除后重建新的pod,这期间应用不可用,这也是不推荐此策略的原因。
字段名称 可选值 字段描述
type(策略类型) 滚动更新 —- 重新创建 如果选择重新创建,Deployment将先删除原有副本集中的所有Pod,然后再创建新的副本集和新的Pod。如此,更新过程中将出现一段应用程序不可用的情况;
maxSurge (最大超出副本数) 数字或百分比 滚动更新过程中,可以超出期望副本数的最大值。该取值可以是一个绝对值(例如:5),也可以是一个相对于期望副本数的百分比(例如:10%);如果填写百分比,则以期望副本数乘以该百分比后向上取整的方式计算对应的绝对值;当最大超出副本数 maxUnavailable 为 0 时,此数值不能为 0;默认值为 25%。例如:假设此值被设定为 30%,当滚动更新开始时,新的副本集(ReplicaSet)可以立刻扩容,但是旧 Pod 和新 Pod 的总数不超过 Deployment 期待副本数(spec.repilcas)的 130%。一旦旧 Pod 被终止后,新的副本集可以进一步扩容,但是整个滚动更新过程中,新旧 Pod 的总数不超过 Deployment 期待副本数(spec.repilcas)的 130%。
maxUnavailable(最大不可用副本数) 数字或百分比 滚动更新过程中,不可用副本数的最大值。该取值可以是一个绝对值(例如:5),也可以是一个相对于期望副本数的百分比(例如:10%);如果填写百分比,则以期望副本数乘以该百分比后向下取整的方式计算对应的绝对值;当最大超出副本数 maxSurge 为 0 时,此数值不能为 0;默认值为 25%;例如:假设此值被设定为 30%,当滚动更新开始时,旧的副本集(ReplicaSet)可以缩容到期望副本数的 70%;在新副本集扩容的过程中,一旦新的 Pod 已就绪,旧的副本集可以进一步缩容,整个滚动更新过程中,确保新旧就绪副本数之和不低于期望副本数的 70%。