您可以通过节点池管理集群中的一组节点资源,例如在节点池中统一管理节点的标签和污点。本文介绍如何基于容器服务ACK集群中的节点池功能创建节点池、调整节点池中的节点数量。

前提条件

已创建ACK集群,且集群Kubernetes版本大于1.9。具体操作,请参见创建Kubernetes托管版集群
注意
  • 请确保您的集群可添加足够的节点数。如果您需要添加更多节点,请提交工单申请扩大配额。关于ACK集群的配额限制,请参见使用限制
  • 添加已有云服务器时,请确保您的专有网络中的ECS实例已绑定一个弹性公网IP(EIP),或者相应VPC已经配置了NAT网关。您需要确保相应节点能正常访问公网,否则,添加云服务器会失败。

背景信息

ACK节点池类型分为节点池和托管节点池,其中节点池分为默认节点池和自定义节点池。自定义节点池和托管节点池都可以开启自动弹性伸缩功能。更多信息,请参见节点池概述

注意事项

由于默认节点池中安装了部分系统组件,弹性伸缩时可能会造成集群功能的不稳定。如果您需要实现弹性伸缩功能,建议您另建节点池。

创建节点池

  1. 登录容器服务管理控制台,在左侧导航栏中选择集群
  2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择节点管理 > 节点池
  3. 节点池页面右上角,单击创建节点池
    您还可以在节点池页面右上角,单击创建托管节点池或者自动弹性伸缩配置创建托管节点池或者具有弹性功能的节点池。
  4. 创建节点池页面,设置创建节点池的配置项。
    有关配置项的详细说明,请参见创建Kubernetes托管版集群。部分配置项说明如下:
    参数 描述
    期望节点数 期望节点数是指节点池应该维持的节点数量。您可以通过调整期望节点数,达到扩容或缩容节点池的目的。如不需要创建节点,可以填写为0。更多信息,请参见调整期望节点数
    付费类型 支持按量付费、包年包月、抢占式实例。更多信息,请参见实例购买方式
    自动伸缩 选中开启自动弹性伸缩开启具备弹性伸缩功能的节点池。更多信息,请参见节点自动伸缩
    操作系统 选择节点的操作系统,包括CentOS、Alibaba Cloud Linux、Windows。
    公网IP 选中公网IP后,节点自动具备公网IPv4地址。您可以通过这个IP直接访问该节点。关于公网IP地址详情,请参见公网IP地址
    注意 如果选中公网IP,请勿在弹性节点池的配置中同时选中EIP,否则将导致节点弹出失败。
    ECS标签 为ECS实例添加标签。
    节点标签 为集群节点添加标签。
    说明 选中节点扩容后设置为不可调度后,新添加的节点注册到集群时默认设置为不可调度。如果想打开调度选项,可以在节点列表中开启。
    伸缩模式 支持标准模式极速模式
    • 标准模式:根据资源申请值的使用量,通过创建、释放ECS的方式进行伸缩。
    • 极速模式:通过创建、停机、启动的方式进行伸缩,提高再次伸缩的速度。
      说明
      • 只有选中自动伸缩旁边的开启自动弹性伸缩后,伸缩模式参数才能显示出来。
      • 极速模式实例停机再次启动时,如果启动失败不会自动释放实例,请注意按需手动释放。
    扩缩容策略
    • 优先级策略:根据您定义的虚拟交换机优先级扩缩容。当优先级较高的虚拟交换机所在可用区无法创建ECS实例时,自动使用下一优先级的虚拟交换机创建ECS实例。
    • 成本优化策略:按vCPU单价从低到高尝试创建,当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式计费实例,当抢占式计费实例规格由于库存等原因都无法创建时,自动尝试以按量付费的方式创建。当扩缩容策略为成本优化策略时,还可以配置以下参数:
      • 按量实例所占比例:节点池实例中按量实例应占的比例,取值范围为0~100。
      • 开启抢占式实例补偿:开启后,当收到抢占式实例将被回收的系统消息时(即抢占式实例被回收前5分钟左右),伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。
      • 允许按量实例补偿:开启后,如果因价格、库存等原因无法创建足够的抢占式实例,伸缩组会自动尝试创建按量实例满足ECS实例数量要求。
    • 均衡分布策略:在伸缩组指定的多可用区(即指定多个专有网络交换机)之间均匀分配ECS实例。如果由于库存不足等原因可用区之间变得不平衡,您可以再进行均衡操作来平衡资源的可用区分布。
      说明 只有设置了多个专有网络交换机时均衡分布策略才能生效。
    资源组 您可以指定节点池所扩容节点的资源组信息。默认为集群的资源组。
    自定义安全组 支持选择普通安全组企业级安全组。关于安全组的更多信息,请参见安全组概述
    说明
    • 自定义安全组为白名单功能,若您需要自定义安全组,请提交工单
    • 只能同时选择一种安全组(企业安全组或普通安全组)。
    • 最多选择5个安全组。
    • 编辑节点池时不支持更改节点池安全组。
    • 创建节点池指定已有安全组时,默认不会为安全组配置集群访问规则。若您需要访问集群,请手动配置集群访问安全组规则。具体操作,请参见添加实例限制
    • 指定已有安全组时,系统默认不会为安全组配置额外的访问规则,可能会导致访问异常,请自行管理安全组规则。关于如何管理安全组规则,请参见最小化集群访问规则
    自定义节点名称

    是否开启自定义节点名称。自定义节点名称后,将同时更改节点名称、ECS实例名称、ECS实例Hostname。

    节点名称由前缀,节点IP地址及后缀三部分组成:
    • 总长度为2-64个字符。
    • 前缀和后缀允许使用大小写字母、数字、连字符(-)和点号(.)。必须以大小写字母开头,不能以连字符(-)或点号(.)开头或结尾。不能连续使用连字符(-)或点号(.)。
    • 前缀必选(ECS限制),后缀可选。
    • 对于开启自定义节点名称的Windows实例,其Hostname固定为IP地址,用"-"代替IP地址中的".",且不包含前缀和后缀。
    例如:节点IP地址为192.1xx.x.xx,指定前缀为aliyun.com,后缀为test。
    • 如果节点为Linux节点,则节点名称、ECS实例、ECS实例Hostname均为aliyun.com192.1xx.x.xxtest。
    • 如果节点为Windows节点,则ECS实例Hostname为192-1xx-x-xx,节点名称、ECS实例名称均为aliyun.com192.1xx.x.xxtest。
  5. 单击确认配置
    节点池页面,如果节点池状态显示初始化中,则说明节点池正在创建中。创建完成后,状态显示为已激活nodepool.png

调整期望节点数

节点池期望节点数是指节点池应该维持的节点数量。在指定节点池的期望节点数后,节点池会自动触发扩容或缩容,将节点数目维持在期望数量,无须人工干预,具体伸缩规则请参见期望实例数变化规则

开启或未开启期望节点数的节点池对于移除节点、释放ECS等不同的操作方式,会有不同感知。具体信息,请参见开启期望节点数与未开启期望节点数的节点池有什么不同?

您可以通过调整期望节点数,达到扩容或缩容节点池的目的,具体操作如下:
  • 通过期望节点数扩容节点:设定期望节点数大于当前节点池的节点数,系统将触发节点池扩容。推荐您通过增大期望节点数的方式进行扩容。这样在出现手动添加节点失败的情况下,系统也会自动进行重试以使得节点池现有节点数满足期望节点数。
  • 通过期望节点数缩容节点:设定期望节点数小于当前节点池的节点数,系统将触发节点池的缩容并移除节点。
    注意
    • 如果您没有通过容器服务控制台,而是直接在ECS或者ESS控制台(或相关API)主动释放节点、移除实例,或者因包年包月到期而被动释放节点,节点池为将节点个数维持在期望节点数,会根据相应节点池配置自动扩容到期望节点数。因此,如您需要更改节点池节点数,请通过调整期望节点数,或者移除节点来更改。关于移除节点的具体操作,请参见移除节点
    • 通过期望节点数缩容节点,即使节点排水失败,节点仍会被移除。对节点排水有强需求的请使用指定节点移除,具体操作,请参见移除节点
  1. 登录容器服务管理控制台,在左侧导航栏中选择集群
  2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择节点管理 > 节点池
  3. 在目标节点池右侧的操作列中,单击扩缩容
  4. 授权CS获取云资源的权限。
    1. 单击AliyunOOSLifecycleHook4CSRole
      说明
      • 如果当前账号是阿里云账号(主账号),单击AliyunOOSLifecycleHook4CSRole即可授权。
      • 如果当前账号是RAM用户(子账号),请先确保阿里云账号(主账号)已授权AliyunOOSLifecycleHook4CSRole, 并给RAM用户(子账号)授权AliyunRAMReadOnlyAccess。具体操作,请参见配置RAM用户或RAM角色RBAC权限
    2. 云资源访问授权页面,单击同意授权
  5. 在节点对话框中,设置配置项。
    有关配置项的详细说明,请参见创建节点池。以下为部分配置项说明:
    • 期望节点数:期望的节点数量。单次操作可扩容最多500个节点。
    • ECS标签:为ECS实例添加标签。
    • 节点标签:集群节点添加标签。
      说明
      • 选中同步更新存量节点标签及污点后,可以将此次修改的节点标签及污点同步更新到已有节点和新节点上,但存量节点上的您自行设置的标签和污点不会受影响。
      • 选中节点扩容后设置为不可调度后,新添加的节点注册到集群时默认设置为不可调度。如果想打开调度选项,可以在节点列表中开启。

    • 污点(Taints):为节点添加污点。
  6. 单击确认
    • 节点池页面,如果节点池状态显示扩容中,则说明节点池正在扩容中。扩容完成后,状态显示为已激活
    • 节点池页面,如果节点池状态显示移除节点中,则说明节点池正在缩容中。移除节点完成后,状态显示为已激活

编辑节点池

说明 编辑节点池时修改的只是节点池的属性,修改后的属性只对自动添加的新节点生效,不会改变已有节点的属性。如果您期望修改节点池中已有节点的付费类型,请登录ECS管理控制台修改。具体操作,请参见按量付费转包年包月

在目标节点池右侧的操作列中,单击编辑,修改节点池配置。关于更多参数配置描述,请参见创建节点池。部分配置项的说明如下:

  • 操作系统:更新节点的操作系统镜像版本。
  • ECS标签:为ECS实例添加标签。
  • 节点标签:集群节点添加标签。
    说明
    • 选中同步更新存量节点标签及污点后,可以将此次修改的节点标签及污点同步更新到已有节点和新节点上。,但存量节点上的您自行设置的标签和污点不会受影响。
    • 选中节点扩容后设置为不可调度后,新添加的节点注册到集群时默认设置为不可调度。如果想打开调度选项,可以在节点列表中开启。

  • 污点(Taints):为节点添加污点。

迁移游离节点至节点池

游离节点指不属于任何节点池的集群节点。在节点池功能上线前创建的老集群,会存在游离节点。

  1. 创建节点池,添加相同配置和数量的节点。
    1. 登录容器服务管理控制台,在左侧导航栏中选择集群
    2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择节点管理 > 节点池
    3. 节点池页面右上角,单击创建节点池
    4. 创建节点池页面,设置创建节点池的配置项,然后单击确认配置
      关于配置项的具体信息,请参见创建节点池
  2. 移除老节点即游离节点。
    说明 如果老节点不再需要,可将其释放,在移除节点对话框,选中同时释放ECS。具体操作,请参见移除节点
    1. 登录容器服务管理控制台,在左侧导航栏中选择集群
    2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择节点管理 > 节点
    3. 节点管理页面中,单击目标节点右侧操作列下的更多 > 移除
      说明 如果需要同时移除多个节点,可在节点列表页面,同时选中要移除的节点,单击批量移除
    4. 移除节点对话框中,可选中同时释放ECS自动排空节点(drain),单击确定
      • 同时释放ECS
        • 仅释放按量付费类型的ECS实例,不被释放的ECS会继续收费。
        • 对于预付费ECS实例,计费周期到期后,ECS实例会自动释放。
        • 您也可以在ECS实例到期前:
        • 若不选择同时释放ECS,该节点所在的ECS实例会继续计费。
      • 自动排空节点(drain):把待移除节点上的Pod转移到其他节点。请确保集群其他节点的资源充足。
        您还可以通过执行命令kubectl drain node-name [options]的方式把待移除节点上的Pod转移到其他节点。
        说明
        • node-name格式为your-region-name.node-id

          your-region-name为您集群所在的地域名称。node-id为待移除节点所在的ECS实例ID。例如,cn-hangzhou.i-xxx

        • options为该命令的可选配置参数。例如,可配置为--force --ignore-daemonsets --delete-local-data。更多信息,请执行命令kubectl drain --help查看。

相关操作

节点池页面可以进行以下操作:
  • 名称下拉列表右侧输入节点池名称,单击查找图标查找目标节点池。
  • 在目标节点池右侧操作列,单击详情查看节点池详情。
  • 在目标节点池右侧操作列,选择更多 > 节点池恢复,在弹出页面恢复节点池。
    说明
    • 节点恢复在部分场景下需要重启您的节点,容器服务会在您的节点重启前执行本节点的排水工作,请确保集群有足够的节点空余资源用于排水,例如提前扩容节点池。
    • 节点恢复采用逐个恢复的策略,如果您在开始恢复后中断恢复进程,容器服务将在当前节点恢复完成后暂停恢复进程。您可以单击继续恢复,或者取消本次恢复任务。
  • 单击同步节点池可以查询和同步集群中所有节点池及其节点的信息和状态。如果您对集群节点进行了手动变更,或节点状态与实际不符,可使用同步节点池功能更新节点状态。
  • 单击目标节点池名称,可以进行以下操作:
    • 单击基本信息页签,查看集群、节点池信息、节点配置及自动弹性伸缩配置信息。
    • 单击节点管理页签,在节点列表中可移除选中节点。
    • 单击节点管理页签,然后在页面右上方,单击导出,可通过导出的CSV文件查看节点的各项信息。
    • 单击节点管理页签,选中仅显示失败节点可以筛选创建失败的节点。
    • 单击伸缩活动页签,查看最近节点实例伸缩活动的变更记录。