# 伸缩 Deployment

返回 Deployment

伸缩(Scaling) Deployment,是指改变 Deployment 中 Pod 的副本数量,以应对实际业务流量的变化。

本文提供了两种途径对 Deployment 执行伸缩操作:

  • 使用 kubectl 伸缩 Deployment
  • 使用 Kuboard 伸缩 Deployment

# 执行伸缩

  • 在 Deployment 详情页面,点击下图中 向左箭头向右箭头 即可完成对 Deployment 的伸缩操作;

    Kubernetes-教程-伸缩

  • kubectl autoscale 指令可以执行对 Deployment 的自动伸缩,目前 Kuboard 界面还不支持此操作。

    请参考 horizontal Pod autoscaling (opens new window)

# 按比例伸缩

滚动更新(RollingUpdate) Deployment 过程中同一时间点运行应用程序的多个版本。如果一个 Deployment 正在执行滚动更新(RollingUpdate)的过程中(也可能暂停了滚动更新),您或者自动伸缩器(autoscaler)对该 Deployment 执行伸缩操作,此时,Deployment Controller 会按比例将新建的 Pod 分配到当前活动的 ReplicaSet(有 Pod 的 ReplicaSet) 中,以避免可能的风险。这种情况叫做按比例伸缩(Proportional Scaling)

例如,假设您已经运行了一个 10 副本数的 Deployment,其 maxSurge=3, maxUnavailable=2。

  • 点击 Deployment 详情页面中的 部署策略 下的 编辑部署策略 按钮,如下图所示:

    最大超出副本数 修改为 3

    最大不可用副本数 修改为 2

    修改后保存。

    Kubernetes-教程

  • 确认当前 10 个副本正在运行,如下图所示:

    Kubernetes-教程-按比例伸缩

  • 点击 调整镜像标签 按钮,将容器镜像更新到一个不存在的标签,例如 sometag,如下图所示:

    Kubernetes-教程-按比例伸缩

  • 此时,Deployment 将新建一个副本集,并且其期望的副本数为 5,原来的副本集的期望副本数被调整为 8,如下图所示:

    由于新副本集中的 Pod 不能获取到镜像,因此滚动更新将卡在这个位置。

    Kubernetes-教程-按比例伸缩

  • 点击 伸缩 按钮,将期望副本数调整为 15,如下图所示:

    Kubernetes-教程-按比例伸缩

  • 此时,由于比原来期望的副本数增加了 5,新增副本数将增加到旧副本集,最终结果如下图所示:(不同 Kubernetes 版本中,行为并不完全一致,比如,某些版本中,会将新增副本数按比例增加到新、旧副本集中,而截图中使用 Kubernetes v1.18,将所有新增副本数都增加到了旧副本集)

    Kubernetes-教程-按比例伸缩

返回 Deployment

更新时间: 2021-04-05 13:09:28