文档

使用ContainerOS实现节点极速扩容

更新时间:

ContainerOS是为容器场景垂直优化的阿里云官方操作系统,完全兼容现有的Kubernetes生态。ContainerOS对OS启动速度、镜像拉取时间等方面进行了优化,以提升ACK节点扩容速度和节点扩容体验。本文介绍如何使用ContainerOS实现节点极速扩容。

索引

前提条件

  • 已配置ContainerOS为托管节点池的操作系统。具体操作,请参见使用ContainerOS

  • 第一次基于ContainerOS创建托管节点池的场景下,已确保Kubernetes集群的如下组件处于最新版本,以便更好地实现节点扩容性能。

    • 创建集群时使用的网络组件:Terway组件、Flannel组件

    • 创建集群时默认的存储插件:csi-plugin

    您可以在目标集群信息页面,选择运维管理 > 组件管理,查看组件是否为最新版本。如果组件卡片右下方出现升级,请单击升级完成组件升级。

注意事项

为提升启动速度,ContainerOS采用预置镜像的方式减少镜像拉取时间。在使用过程中,请勿手动升级ACK相关组件(Terway或Flannel、csi-plugin),以免出现预置镜像版本与应用版本不一致的情况,导致启动耗时变长。

说明

借助于容器镜像分层的特性,相较于拉取全新镜像,ContainerOS更新镜像的耗时更短,弹性能力更优。但仍然建议您提前完成相关组件升级,以获得更好的节点扩容体验。

ContainerOS扩容优势

优化项

说明

OS启动速度

通过简化OS启动流程,ContainerOS可以有效降低OS启动时间。ContainerOS是云上虚拟机的操作系统,涉及到的硬件驱动较少,可以将必要的内核驱动模块修改为built-in模式。此外,ContainerOS去除initramfs,并显著简化udev规则,使得OS启动速度大幅提升。以ecs.g7.large规格的ECS实例为例,Alibaba Cloud Linux 3首次启动时间为1分钟以上,而ContainerOS仅需2秒左右。

镜像拉取耗时

ECS节点启动完成后,需要拉取部分组件的容器镜像,以在ACK场景下执行一些基础性的工作。通过预置集群管控必备组件的容器镜像,ContainerOS可以减少节点启动过程中因镜像拉取而带来的耗时。

以Terway网络组件为例,节点需等待Terway组件的容器就绪后,才可以转换为就绪状态。网络拉取的长尾效应将带来极大的耗时。为避免此问题,ContainerOS通过预置的方式提前将此组件提前安装在OS内部,使得组件可以直接从本地目录获取,避免网络拉取镜像耗时。

节点弹性性能

通过与ACK管控链路能力结合,ContainerOS可以有效提高节点弹性性能。

下图统计了从空的ACK节点池扩容的端到端的P90耗时,计时从下发扩容请求开始,到90%的节点处于就绪状态结束。相较于CentOS和Alibaba Cloud Linux 2自定义镜像方案,ContainerOS性能优势明显。具体数据如下图所示。

image
重要

本示例中提供的数据仅为理论值,实际数据可能会因产品功能优化略有偏差,请以您的操作环境为准。

操作步骤

如果您有同时启动大量节点的业务场景,例如同时扩容超过100个ECS节点,您可以手动配置Kube Controller Manager、Kube Scheduler、APIServer三个优化项以提升节点扩容速度。

说明

部分API默认支持的最大连接数为100,因此同时启动少于100个ECS节点时无需额外配置。

Kube Controller Manager限流调整

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面的核心组件页签,定位到Kube Controller Manager,然后单击卡片右下方的配置

  4. 在参数配置对话框,配置kubeAPIQPS800kubeAPIBurst1000(其余选项按需配置),然后单击确定

    说明

    基于测试数据,推荐您按照上方数值进行配置。如有其他需求,您也可以按照自身业务场景灵活配置。

Kube Scheduler限流调整

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面的核心组件页签,定位到Kube Scheduler,然后单击卡片右下方的配置

  4. 在参数配置对话框,配置connectionQPS800connectionBurst1000(其余选项按需配置),然后单击确定

    说明

    基于测试数据,推荐您按照上方数值进行配置。如有其他需求,您也可以按照自身业务场景灵活配置。

APIServer数量调整

集群内APIServer的副本数量根据负载进行弹性伸缩。如果同一时间弹出节点较多,APIServer会进行扩容,增加节点Ready的耗时。您可以提前提交工单,调整APIServer的副本数量,优化扩容效果。

相关文档

ContainerOS概述