升级节点组
节点组提供升级功能,支持对节点的 Kubelet 和容器运行时版本进行升级,针对 GPU 节点支持升级nvidia-container-toolkit版本,针对昆仑P800节点支持升级xpu-container-runtime 版本。执行升级操作前,CCE 集群会进行前置检查,节点组需要通过检查后才能进行升级。
注意事项
- 节点组升级过程中仅支持扩容操作,不支持缩容操作,升级过程中不会触发缩容节点。
- 节点组升级默认为原地升级,部分升级场景在升级节点前会先进行节点排水操作,如容器运行时由Docker升级为Containerd、升级nvidia-container-toolkit、xpu-container-runtimeb版本。
-
如果您的集群中存在游离节点,即未被节点组管理的Worker节点,可以参考添加外部已有节点将游离节点加入节点组中进行升级。
- 单账号最多支持10个节点组同时升级。
- 升级时会将升级配置将作为节点组配置对新增节点生效(仅修改当前节点组配置,不影响其他节点组)。
- CCE 会默认配置节点资源预留。如果集群未配置资源预留且节点水位较高,升级后存在Pod驱逐后无法被快速调度的风险。请为节点预留部分资源,推荐CPU使用率不超过50%,内存使用率不超过70%。 更多信息,请参见节点资源预留策略。
- 节点上已运行的工作负载业务可能会由于单实例部署、可调度资源不足等原因产生中断,请您合理评估升级风险,并挑选业务低峰期进行,或对关键业务应用设置PDB策略(Pod Disruption Budget,即干扰预算),升级过程中将严格根据PDB规则保障关键业务的可用性。
- 如果您对集群有过配置更改,例如打开了SWAP分区、曾通过黑屏操作修改kubelet配置或运行时配置等,集群升级过程有可能失败,或自定义配置可能会被覆盖。
-
CCE进行节点排水操作,遵循Pod Disruption Budget(PDB)的前提下将节点上的Pod驱逐至其他可用节点。为确保服务高可用性,建议您采用多副本部署策略,将工作负载分散在多个节点上,同时为关键业务配置PDB,控制同时中断的Pod数量。
- 节点排水的默认超时时间为4分钟。如果在超时时间内未能完成Pod迁移,CCE将终止本次升级以确保业务稳定性。
- 如果节点中的Pod引用了HostPath,且该HostPath指向系统盘,替盘升级后HostPath目录中数据会丢失。
- 自定义操作系统镜像非CCE官方严格验证。CCE无法完全保证升级成功。
- 在1.24及以下版本的集群中,如果工作负载的Pod只配置了启动探针(Startup Probe),Pod会在kubelet重启后出现短暂的NotReady现象。建议您采用多副本部署策略,将工作负载分散在多个节点上,以确保在某个节点重启期间仍有足够的可用Pod。
升级说明
节点组升级包含 Kubelet、容器运行时、nvidia-container-toolkit、xpu-containe-runtime(仅支持昆仑P800节点) 版本升级。
- Kubelet 升级:支持将节点组中的全部节点的 Kubelet 版本升级到与当前集群控制面相同的版本。
-
容器运行时升级:支持将节点组中的全部节点的容器运行时版本升级至集群发布支持的最新版本,同时支持从 Docker 升级为 Containerd。
- 从Docker升级为Containerd时,会强制进行节点排水操作。
- 从Containerd升级至更新版本的Containerd时,默认采取原地升级。节点上的/etc/containerd/config.toml会被替换为CCE提供的新版本。
说明:运行时升级过程中可能会造成Pod Prober、Lifecycle Hook失败,也可能会出现Pod原地重启情况。
- nvidia-container-toolkit 升级:支持将节点组中的全部节点的 nvidia-container-toolkit 版本升级至所支持的最新版本。升级时会强制进行节点排水操作
-
xpu-container-runtime升级:支持将节点组中的全部节点的 xpu-container-runtime 版本升级至所支持的最新版本。
- 目前xpu-containe-runtime仅支持最新版本(1.0.5)。
- 仅昆仑P800节点支持升级xpu-container-runtime。
- xpu-container-runtime升级与操作系统有关,仅支持操作系统为ubuntu,其他操作系统暂不支持。
- xpu-container-runtime升级时会强制进行节点排水操作。
原地升级方式概述
- 执行升级前置检查。如果容器有关键异常(例如无法正常服务ttrpc请求、容器内进程无法正常响应信号等),则会停止升级。
- 将当前容器和Pod状态保留到tmp临时目录。
- 将containerd、crictl及相关配置文件升级为CCE提供的新版本,重启containerd(此行为不会影响运行中的容器)。如果您之前在节点上修改过/etc/containerd/config.toml配置,此次升级会导致您的修改被覆盖。
- 确保kubelet处于正常运行状态,节点就绪。
操作步骤
- 登录容器引擎控制台。
- 在左侧导航栏,选择集群列表。
- 在“集群列表”页面单击目标集群,进入集群管理页面。
- 在集群管理页面左侧导航栏中选择节点管理 > 节点组。
- 在目标节点组操作列选择更多 > 升级进入节点组升级页面并完成升级配置。
| 配置项 | 必选/可选 | 配置说明 |
|---|---|---|
| 升级对象 | 必选 | 选择节点需要升级的对象。
|
| 升级范围 | 必选 | 选择升级的节点范围。
|
| 节点排水 | 可选 | 选择节点升级前是否进行排水操作,驱逐节点上的Pod。 |
| 每批次执行最多节点数 | 必选 | 节点组中的节点升级分批次进行,设置每批次最大并行升级的节点数,默认为1,最大可设置10。关于升级流程说明,请参见上方:原地升级方式概述。 |
| 自动暂停策略 | 必选 | 设置升级过程中的暂停策略。
|
| 每批次间隔时间 | 必选 | 当自动暂停策略选择不暂停时,需要设置节点过程中每批次的间隔时间。
|
| 间隔时间 | 必选 | 当每次批间隔时间选择设置间隔时间时,需要设置升级过程中执行下一次批次升级的间隔时间,默认为5分钟,设置范围为5~120分钟。 |
- 单击前置检查,在前置检查全部通过后开始节点升级。
-
在升级过程中,您可以进行如下操作。
- 暂停:暂停升级。单击暂停,暂停升级后,升级中的节点将继续升级直至完成,已完成升级的节点不支持版本回退。
- 继续:继续升级。单击继续,节点组将继续执行剩余节点的升级。
- 取消:取消升级。单击取消,节点组将取消后续节点的升级,升级中的节点将继续升级直至完成。已完成升级的节点的不支持版本回退。
- 升级完成后,您可以在节点页面单击节点名称,在节点列表页查看节点的kubelet版本、容器运行时版本等信息是否符合预期。


注意:
暂停状态为节点组升级的中间状态,建议您不要在此期间对集群进行操作,并尽快完成升级过程。集群会将处于中间状态的节点组在7日之后关闭升级过程,并清理一切升级相关的事件和日志信息。
常见问题说明
节点组升级后支持版本回退吗?
kubelet、容器运行时、nvidia-container-toolkit、xpu-containe-runtime(仅支持昆仑P800节点)在版本升级后均不支持版本回退。
每个批次升级大概需要多长时间?
节点组默认使用的原地升级,时间5~8分钟。
如何升级不属于任何节点组的游离节点?
针对不属于任何节点组的游离节点。您可以将游离节点迁移到一个节点组后,对节点组进行升级。关于如何迁移游离节点至节点组,请参见添加外部已有节点。
节点运行时由Docker切换Containerd后,Docker目录未被清理占用磁盘空间怎么办?
除Kubernetes集群可管理的容器、镜像、日志等文件外,Docker目录中也包含您自行创建的文件路径。如无需使用,请在运行时切换后手动删除数据盘中的Docker目录。
