托管节点池是ACK全新推出的具有自动升级、节点自愈能力的免运维型节点池,为您提供统一的、全托管的节点生命周期管理。您无需关心节点运维操作,如节点组件版本更新、OS版本更新及OS镜像CVE修复等,ACK会自行修复节点池内的故障节点。

背景信息

节点池的相关概念,如下所示:
  • 普通节点池:为您提供管理一组同质节点的能力,同一个节点池内具有相同的节点配置,例如规格、标签(Label)、污点(Taint)。您可以自行运维普通节点池内节点。
  • 托管节点池:在普通节点池基础上,提供自动节点升级、故障修复等能力,从而实现托管的自动化节点运维。
  • 替换系统盘:通过替换节点系统盘(下文简称替盘)的方式初始化节点,该节点的IaaS属性不发生改变,如节点名称、实例ID、IP等,但会删除节点系统盘上的数据,执行节点的重新初始化流程。额外挂载到该节点上的数据盘不受影响。
    注意 请勿在节点系统盘中存储持久化数据,建议保存在数据盘中。
  • 原地升级:与替盘相对应的一种升级方式,直接在原节点上更新替换所需组件。原地升级不会替换系统盘,也不会重新初始化节点,因此不会破坏原节点的数据。

适用场景

  • 只关注上层应用开发,不希望主动运维worker节点。
  • 需要快速响应OS镜像CVE安全漏洞。当新的CVE发布后,能够迅速升级,从而修补漏洞。
  • 对底层节点的变更不敏感,业务Pod对迁移有较高的容忍度,更加关注业务的弹性而非不可变性。
  • 需要升级节点上的Docker版本及OS镜像版本。

托管节点池与普通节点池对比

对比项 托管节点池 普通节点池
运维能力 托管于容器服务 用户自行管理
节点升级
  • 维护窗口内自动升级。
  • 也可以手动触发升级,支持升级OS、Docker版本、Kubelet版本、CVE漏洞等。

    关于如何升级托管节点池,请参见升级托管节点池

  • 升级方式为替换系统盘。
  • 仅支持手动触发升级。
  • 仅支持升级Kubelet版本。
  • 升级方式为原地升级。
自动故障修复 支持 不支持
密钥管理 仅支持密钥方式 同时支持密码和密钥方式

主要特征

  • 您可以为同一个集群创建多个托管节点池,不同节点池具有不同的配置,从而实现不同规格节点的支持。
  • 执行替盘轮转升级前会先尝试通过cordon命令将节点设置为不可调度,然后驱逐该节点上的Pod。如果超时15分钟后,Pod仍未被驱逐,容器服务将强制执行替盘操作。
  • 托管节点池会监控节点的运行状态,如果节点超过10分钟未上报节点状态,或者状态为NotReady,容器服务会通过尝试重启节点来恢复。
  • 您可以关闭托管节点池的自动升级功能。此时当有新的可用Docker及OS版本后,容器服务不会自动为节点池升级。
  • 托管节点池的自动升级的时候需要设置维护窗口。容器服务会尽可能遵守维护窗口计划,在维护窗口内已经开始的升级会继续完成,未开始的升级计划会被暂停。

注意事项

  • 托管节点池通过替换系统盘的方式执行节点升级操作,该操作会删除节点系统盘上的数据。数据盘内的数据不受影响,请勿在系统盘上存储任何持久化数据。
  • 托管节点池在替盘升级前会执行节点下线与排水,因此会造成Pod的重启、长链接的中断。
  • 托管节点池会尝试重启故障节点来修复可能的故障,因此节点上的Pod会被重启。