集群扩缩容

最近更新时间:2019-07-12 19:20:33

操作场景

本文档指导您对集群进行扩缩容。TKE 容器集群支持以下扩缩容方法:

前提条件

已登录 容器服务控制台

操作步骤

手动添加/移除节点

新建节点

具体操作请参考 新建节点
创建过程中,您可以在 “云服务器配置” 页面,配置云服务器,并对集群进行扩缩容。

添加已有节点

说明:

  • 当前仅支持添加同一 VPC 下的云服务器。
  • 添加已有节点到集群,将重装改云服务器的操作系统。
  • 添加已有节点到集群,将迁移服务器所属项目到集群所设置的项目。
  • 有且仅有一块数据盘的节点加入到集群,可以选择是否设置容器目录,设置容器目录会格式化数据盘。无数据盘或多块数据盘的云服务器设置容器目录不生效。

具体操作请参考 添加已有节点
添加过程中,您可以在 “云服务器配置” 页面,配置需要添加到集群的云服务器,并对集群进行扩缩容。

移除节点

具体操作请参考 移除节点

通过弹性伸缩自动添加/移除节点

集群自动扩缩容,又称 Cluster Autoscaler(CA),是一个独立的程序。它可以动态地调整集群的节点数量来满足需求。当集群中出现因资源不足而无法调度的 Pod(实例) 时,自动触发扩容,为您减少人力成本。当满足节点空闲等缩容条件时,自动触发缩容,为您节约资源成本。

开启集群自动伸缩

创建伸缩组
  1. 在左侧导航栏中,单击【集群】,进入 “集群管理” 页面。

  2. 单击需要创建多个伸缩组的集群 ID/名称,进入该集群的管理页面。如下图所示:
    管理页面

  3. 在左侧导航栏中,选择【节点管理】>【伸缩组】,进入“伸缩组列表” 页面。

  4. 单击【新建伸缩组】,弹出 “新建伸缩组” 窗口。如下图所示:
    新建伸缩组

  5. 根据实际需求,设置伸缩组。主要参数信息如下:
    启动配置

    • 名称:自定义。
    • 创建方式:提供 “重新选择机型配置” 和 “选择已有节点机型 两种方式,请根据实际需求进行选择。
    • 实例类型:提供 “按量计费” 和 “竞价计费” 两种模式,请根据实际需求进行选择。
    • 机型设置:请根据实际需求进行选择。
    • 登录方式:
      • 设置密码:请根据提示设置对应密码。
      • 立即关联密码:密钥对是通过一种算法生成的一对参数,是比常规密码更安全的登录云服务器的方式,具体详情可参阅 SSH 密钥
      • 自动生成密码:自动生成的密码,该密码将通过站内信发送给您。
    • 数据盘挂载:请根据实际需求进行选择。
    • 安全组:用于设置云服务器 CVM 的网络访问控制,请根据实际需求进行选择。您还可以单击【新建安全组】,放通其他端口。
    • Label:为伸缩组设置 Label,会在自动扩容出的节点上设置 Label,从而实现服务的灵活调度策略。

    伸缩组配置

    • 支持网络:默认为集群网络,且不可更改。
    • 支持子网:请根据实际需求进行选择。
    • 节点数量范围:限制伸缩组内节点的数量范围。
    • 重试策略:提供“快速重试”和“间隔递增重试”两种重试策略,请根据实际需求进行选择。
  6. 单击【提交】,完成创建。

  7. 重复执行 步骤1 - 步骤6,可创建多个伸缩组。

注意:

  • 需要配置服务下容器的 request 值:自动扩容的触发条件是集群中存在由于资源不足而无法调度的 Pod,而判断资源是否充足正是基于 Pod 的 request 来进行的。
  • 不要直接修改属于伸缩组内的节点。
  • 同一伸缩组内的所有节点需具有相同的配置(机型和 Label 等)。
  • 可以使用 PodDisruptionBudget 防止 Pod 在缩容时被删除,。
  • 在指定伸缩组的最小/最大值节点数量设置之前,检查所在可用区的配额是否足够大。
  • 建议不要启用基于监控指标的节点弹性伸缩。
  • 删除伸缩组会同时销毁伸缩组内的 CVM,请谨慎操作。

扩容缩容触发条件

扩容条件

集群中出现因为缺少可用资源而无法调度的容器实例时,将触发自动扩容策略,尝试扩容节点来运行这些实例。
每当 kubernetes 调度程序找不到一个运行 Pod 的地方,它会将 Pod 的 PodCondition 设置为 false,并将原因设置为 “不可调度的”。集群自动扩缩容程序每隔一段时间扫描一次是否有不可调度的 Pod 来进行扩容,如果有,则尝试扩容节点来运行这些 Pod。

缩容条件

当节点上所有 Pod 的 CPU 和内存 request 占比同时小于50%时,作为备选缩容节点尝试缩容。如果满足以下所有缩容条件,需将该节点上的所有 Pod 都可调度到其他节点上,才可以进行缩容。

  • 当您设置了严格的 PodDisruptionBudget 的 Pod 不满足 PDB 时,不会缩容。
  • Kube-system 下的 Pod。
  • 节点上有非 deployment,replica set,job,stateful set 等控制器创建的 Pod。
  • Pod 有本地存储。
  • Pod 不能被调度到其他节点上。

常见问题

扩容缩容的相关问题可参见 扩容缩容相关