autoscaler
插件简介
autoscaler是Kubernetes中非常重要的一个Controller,它提供了微服务的弹性能力,并且和Serverless密切相关。
弹性伸缩是很好理解的一个概念,当微服务负载高(CPU/内存使用率过高)时水平扩容,增加pod的数量以降低负载,当负载降低时减少pod的数量,减少资源的消耗,通过这种方式使得微服务始终稳定在一个理想的状态。
云容器引擎简化了Kubernetes集群的创建、升级和手动扩缩容,而集群中应用的负载本身是会随着时间动态变化的,为了更好的平衡资源使用率以及性能,kubernetes引入了autoscaler插件,它可以根据部署的应用所请求的资源量自动的动态的伸缩集群,详情请了解创建节点伸缩策略。
插件说明
autoscaler可分成扩容和缩容两个方面:
- 自动扩容
当集群中的Pod由于工作节点资源不足而无法调度时,会触发集群扩容,扩容节点与所在分组资源配额一致。详情请参见创建节点伸缩策略。
当前该插件使用的是最小浪费策略,即若pod创建需要3核,此时有4核、8核两种规格,优先创建规格为4核的节点。 - 自动缩容
当集群节点处于一段时间空闲状态时(默认10min),会触发集群缩容操作(即节点会被自动删除)。当节点存在以下几种状态的pod时,不可缩容:
- pod有设置PodDisruptionBudget,当移除pod不满足对应条件时,节点不会缩容。
- pod由于一些限制,如亲和、反亲和等,无法调度到其他节点,节点不会缩容。
- pod拥有cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'这个annotations时,节点不缩容。
- 节点上存在kube-system namespace下的Pod(除kube-system daemonset创建的Pod),节点不缩容。
- 节点上如果有非controller(deployment/replica set/job/stateful set)创建的Pod,节点不缩容。
约束与限制
- 集群为1.9.7-r1及以上版本时,才支持此功能。
- 安装时请确保有足够的资源安装本插件。
- 该插件功能仅支持通过按需计费方式购买的虚拟机节点,不支持“包年/包月”方式购买的节点和裸金属节点。
安装插件
- 登录CCE控制台,在左侧导航栏中选择“ 插件管理”,在“插件市场”页签下,单击autoscaler插件下的“安装插件”。
- 在安装插件页面,选择您要安装插件的集群和插件版本,单击“下一步:规格配置”。
- 参照表1配置插件安装参数。
表1 基本配置 参数
支持的插件版本
参数说明
插件规格
所有版本
插件部署可选择如下几种规格。
- 单实例:以单实例部署插件。
- 高可用50:50节点集群规模多实例部署,实例数为2,具有高可用能力。
- 高可用200:200节点集群规模多实例部署,实例数为2,具有高可用能力,每个实例使用资源比高可用50的实例更多。
- 自定义:根据需要自定义实例数量和实例规格。
实例数
所有版本
选择上方插件规格后,显示插件中的实例数,此处仅作显示。
容器
所有版本
选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。
登录方式
部分版本无此参数
为自动扩容工作节点选择登录方式,当前支持“密码”和“密钥对”两种方式,您可根据需要进行选择。
选择“密码”方式:
- 密码:自动扩容工作节点密码。通过该密码登录工作节点执行相关操作,用户名为root。
- 确认密码:再次输入自动扩容工作节点密码。
选择“密钥对”方式:
密钥对:密钥对用于远程登录节点时的身份认证,请选择已有密钥对或创建密钥对。
自动缩容
所有版本
默认不开启:将不开启自动缩容,只进行自动扩容。
开启:开启自动缩容,缩容策略对开启弹性的伸缩的节点池有效。
- 空置时间(min):当集群节点处于一段时间的空闲状态时,会触发集群缩容操作,删除节点,默认10min。
- 百分比:当集群节点资源低于多少百分比时,进行集群缩容扫描(默认0.5,即50%,cpu和mem都要满足的条件下才会缩容)。
- 扩容后缩容冷却时间:扩容执行后能再次启动缩容评估的时间间隔,默认10min。说明:
集群中如果同时存在自动扩容和自动缩容的场景,建议配置“扩容后缩容冷却时间”为0min,避免由于部分节点池持续扩容或者扩容失败重试而阻塞整体缩容节点行为,导致非预期的节点资源浪费。
- 节点删除后缩容冷却时间:删除节点后能再次启动缩容评估的时间间隔,默认10min。
- 缩容失败后缩容冷却时间:缩容失败后能再次启动缩容评估的时间间隔,默认3min。节点池中配置的缩容冷却时间和此处配置的缩容冷却时间之间的影响和关系请参见弹性缩容冷却时间。
- 空节点缩容最大并发数:默认10。
- 不可移除节点的重检查时间:节点被判定不可移除后能再次启动检查的时间间隔,默认5min。
预置节点池配置
部分版本无此参数
此为默认资源组。集群扩容时,若没有其他可用分组,将使用默认分组的资源规格进行扩容节点。
单击“添加预置节点池配置”进行参数设置:
- 可用区:选择一个可用区。可用区是指在同一区域下,电力、网络隔离的物理区域。
- 操作系统:选择节点对应的操作系统。
- Taints:可选项,默认为空。支持给该节点池扩容出来的节点加Taints来设置反亲和性,每个节点池最多配置10条Taints,每条Taints包含以下3个参数:
- Key:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀。
- Value:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符。
- Effect:只可选NoSchedule,PreferNoSchedule或NoExecute。
须知:- Taints配置时需要配合Pod的toleration使用,否则可能导致扩容失败或者Pod无法调度到扩容节点。
- 配置后无法修改,请您谨慎配置,错误的配置可能会导致扩容失败或pod无法调度。
- 标签管理:通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。说明:
您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。
- 节点规格:节点的CPU配置和内存配置。
单击下方的“高级设置”,可以配置更多插件参数:
表2 高级设置 参数
插件版本
参数说明
节点总数
所有版本
集群可管理的节点数目的最大值,扩容时不会让集群下节点数超过此值。
CPU总数(核)
所有版本
集群中所有节点 CPU 核数之和的最大值,扩容时不会让集群下节点CPU核数之和超过此值。
内存总数(GB)
所有版本
集群中所有节点内存之和的最大值,扩容时不会让集群下节点内存之和超过此值。
自动扩容
部分版本无此参数
未调度实例扩容:默认选中。
启用集群使用率扩容:可选,扩容能力增强。
- cpu扩容使用率:当节点池CPU达到所设置的使用上限,将扩容当前预置节点池的节点数。
- 内存扩容使用率:当节点池内存达到所设置的使用上限,将扩容当前预置节点池的节点数。
磁盘
部分版本无此参数
系统盘和数据盘:设置节点磁盘空间。系统盘和数据盘均可提供以下性能规格的云硬盘:
- 高IO:是指由SAS存储提供资源的磁盘类型。提供可达到3000的高IO和低至1 ms的读写延时,支持NoSQL/关系型数据库,数据仓库,文件系统等应用。
- 超高IO:是指由SSD存储提供资源的磁盘类型。提供可达到20000的超高IO和低至1 ms超低读写时延,支持NoSQL/关系型数据库,数据仓库等应用。
命令行注入
部分版本无此参数
请输入脚本命令。
说明:- 脚本命令大小限制:0~1000字符。
- 命令行注入示例及使用方法,请参见用户数据注入。
- 配置完成后,单击“安装”。
待插件安装完成后,单击“返回”,在“插件实例”页签下,选择对应的集群,可查看到运行中的实例,这表明该插件已在当前集群的各节点中安装。
升级插件
- 登录CCE控制台,单击左侧导航栏的“插件管理”,在“插件实例”页签下,选择对应的集群,单击autoscaler下的“ 升级”。
- 如果升级按钮处于冻结状态,则说明当前插件版本是最新的版本,不需要进行升级操作;
- 若升级按钮可单击,则单击升级按钮即可升级autoscaler插件。
- 升级autoscaler插件时,会替换原先节点上的旧版本的autoscaler插件,安装最新版本的autoscaler插件以实现功能的快速升级。
- 在弹出的窗口中,配置参数后,升级该插件。配置参数可参考安装插件中的参数说明。
卸载插件
- 登录CCE控制台,在左侧导航栏中选择“ 插件管理”,在“插件实例”页签下,选择对应的集群,单击autoscaler下的“卸载”。
- 在弹出的窗口中,单击“是”,可卸载该插件。
