通过配置集群维护窗口,可将集群自动升级、CVE修复等计划内变更操作安排在业务低谷期执行,以保障核心业务在高峰时段的稳定性,并最大限度地降低变更对业务的潜在影响。
适用范围:ACK托管集群
集群维护窗口介绍
集群维护窗口是一个为ACK集群预先设定的、可重复的特定时间段。在此期间,ACK将执行集群自动化运维操作,如集群自动升级、CVE漏洞自动修复等。
默认情况
ACK会根据任务类型及其影响范围,自动规划运维计划执行的时间及顺序,无需手动配置维护窗口。
下图展示了一个以周为单位的维护窗口示例。
自定义维护窗口
通过设定合理的自定义维护窗口,限定ACK可执行运维操作的时间,例如将计划内变更操作限定在业务低谷期执行。
下图展示了一个以周为单位的维护窗口示例。
维护窗口定义了允许ACK执行运维操作的时间窗口,但ACK并不一定会立即在下一个可用的维护窗口内执行运维任务。任务的最终执行时间遵循ACK的整体任务下发节奏与全局灰度编排规则。
配置建议
可通过控制台、API或Terraform在创建集群时配置维护窗口,也可修改已有集群的维护窗口。配置方式如下:
控制台:创建ACK托管集群
Terraform:通过Terraform创建ACK托管集群
配置建议如下:
周期:可选择每周维护或自定义维护周期。为便于规律性地管理运维活动,建议生产环境采用固定维护周期,并将起始时间设置在业务流量低谷期,例如凌晨00:00至04:00。
时长:为避免因窗口期过短导致升级等耗时较长的任务无法完成,建议单次维护窗口时长不少于4小时,且每月累计可用的维护总时长不少于48小时。
时区:根据业务所在地选择正确的时区,确保窗口开启时间符合预期。
应用高可用配置:为确保服务高可用性,建议采用多副本部署策略,将工作负载分散在多个节点上,同时为关键业务配置Pod Disruption Budget(PDB),控制同时中断的Pod数量。
多集群场景:如有多个生产集群,建议将维护窗口错开设置,以实现集群间的灰度升级,进一步提升整体业务的稳定性。
异常处理
失败重试:若运维任务在当前维护窗口内执行失败,ACK将在下一个可用的维护窗口期自动重试该任务。
超时取消:运维计划对应的任务通常分批次下发执行。如果某个运维计划(如CVE修复)的整体执行时间超出当前维护窗口,ACK将按以下方式处理:
未开始的批次:将被自动取消,并顺延至下一个维护窗口期执行。
已开始的批次:将继续执行直至完成,以保证节点状态的一致性。该批次完成后,后续未开始的新批次将被取消。
二、遵循和不遵循维护窗口的运维操作
在维护窗口期内,ACK会执行一系列自动化的运维操作,但某些紧急或高优任务可能不会等待维护窗口。
遵循维护窗口的运维操作
集群控制面的Kubernetes版本自动升级。
自动扫描并修复节点操作系统存在的CVE漏洞。
Auto Mode集群中关键系统组件的自动升级。
Auto Mode集群中节点池镜像ID的自动更新。
即自动更新节点池的操作系统配置,使得后续新扩容的节点使用新的操作系统镜像。但不会直接升级存量节点的操作系统。
ECS系统事件的自动响应,(如因系统维护实例重启:SystemMaintenance.Reboot)。
如果节点池在ECS设定的计划执行时间前有可用的维护窗口,ACK会在维护窗口内执行自动响应流程。否则,ACK会在ECS计划执行时间的前一个小时执行该流程。
不遵循维护窗口的运维操作
以下操作因其高优先级或由独立机制管理,将在需要时立即执行,不遵循维护窗口的限制:
控制面修复:为保障集群核心服务的稳定性,控制面组件的自愈修复会立即执行,不受维护窗口限制。
节点自愈:当托管节点池中的节点出现故障时,自愈机制会立即介入以恢复节点,不等待维护窗口。
节点自动扩缩容:集群节点伸缩根据实时的业务负载(CPU/内存等)触发,与计划性的维护窗口无关。
关键安全漏洞修补:对于严重级别的安全漏洞,为保障集群与业务的整体安全,ACK保留绕过维护窗口进行紧急修复的权利。