云服务器内容精选

  • 场景二:单独使用资源计划 当数据量以天为周期有规律的变化,并且希望在数据量变化前提前完成集群的扩缩容,可以使用 MRS 的资源计划配置在规定时间内按计划调整Task节点数量。 例如:某项实时处理业务数据量在周一、周二和周六7:00~13:00出现高峰,其他时间保持平稳低水平。假设使用MRS流式集群来处理该业务数据,在周一、周二和周六7:00~13:00时,为应对数据量高峰需要5个Task节点的资源,其他时间只需要2个Task节点。 进入弹性伸缩配置界面后,配置资源计划。 资源计划可调控节点数量,也会对实际价格有影响,请谨慎操作。 节点数量范围的“默认范围”设置为“2-2”,表示除资源计划规定时间范围外,其他时间Task节点数量固定为2个。 单击默认范围下方的“配置指定时间段的节点数量范围”或者“添加资源计划”。 配置“生效日期”、“时间范围”和“节点数量范围”。 例如此处“生效日期”设置为周一、周二和周六,“时间范围”设置为“07:00-13:00”,“节点数量范围”设置为“5-5”,表示在该时间范围内,Task节点数量固定为5个。 单击“配置指定时间段的节点数量范围”配置多条资源计划。 生效日期默认是每日生效,也可以选择周一至周日任意一天或几天生效。 如果没有配置指定时间段的节点数量范围,则节点数量范围以“默认范围”为准。 如果配置了指定时间段的节点数量范围,则在这个时间范围内,以配置的“节点数量范围”为准。不在配置的时间范围时,则以“默认范围”为准。
  • 场景三:弹性伸缩规则与资源计划叠加使用 如果数据量并非非常平稳,有可能出现超出预期的波动,因此并不能保证固定Task节点范围一定可以满足业务场景,此时需要在资源计划的基础上根据实时负载对Task节点数量进行调整。 例如:某项实时处理业务数据量在周一、周二和周六7:00~13:00出现规律性变化,但是数据量变化并非非常平稳。假设在周一、周二和周六7:00~13:00期间,需要Task节点的数量范围是5~8个,其他时间需要Task节点数量是2~4个。因此可以在资源计划的基础上,设置基于负载的弹性伸缩规则,以实现当数据量超出预期后,Task节点数量可以在资源计划规定的范围内根据负载情况进行浮动,但不会超出该规定范围。资源计划触发时,会以变化最小的方式使节点数量满足计划规定范围,即如果需要扩容则扩容到计划节点数量范围的下限,如果需要缩容则缩容到计划节点数量范围的上限。 进入弹性伸缩配置界面后,配置弹性伸缩规则。 弹性伸缩规则可调控节点数量,也会对实际价格有影响,请谨慎操作。 节点数量范围的默认范围: 输入Task实例弹性伸缩的数量范围,此约束应用于所有扩容缩容规则。 例如本场景中,配置为2~4个。 伸缩规则: 需要配置扩容或者缩容,否则弹性伸缩将不会启用。 规则类型选择“扩容”或者“缩容”。 单击“添加规则”,进入“添加规则”页面。 图3 添加规则 配置“规则名称”、“如果”、“持续”、“添加”、“冷却时间”。 单击“确定”。 您可以在弹性伸缩页面,扩容或者缩容区域查看配置的规则。 配置资源计划。 单击节点默认范围下方的“配置指定时间段的节点数量范围”或者“添加资源计划”。 配置“生效日期”、“时间范围”和“节点数量范围”。 例如此处“生效日期”设置为周一、周二和周六,“时间范围”设置为“07:00-13:00”,“节点数量范围”设置为“5~8”。 单击“配置指定时间段的节点数量范围”或者“添加资源计划”按钮配置多条资源计划。 生效日期默认是每日生效,也可以选择周一至周日任意一天或几天生效。 如果没有配置指定时间段的节点数量范围,则节点数量范围以“默认范围”为准。 如果配置了指定时间段的节点数量范围,则在这个时间范围内,以配置的“节点数量范围”为准。不在配置的时间范围时,则以“默认范围”为准。
  • 场景一:单独配置弹性伸缩规则 单独配置弹性伸缩规则场景:需要根据Yarn资源使用情况动态调整节点数,在Yarn可用内存低于20%时扩容5个节点,可用内存高于70%时缩容5个节点。Task节点组最高不超过10个节点,最低不少于1个节点。 进入弹性伸缩配置界面后,配置弹性伸缩规则。 配置节点默认范围 输入Task实例弹性伸缩的数量范围,此约束应用于所有扩容缩容规则,取值范围为0~500。 例如本业务场景中,配置为1~10。 配置弹性伸缩规则 需要配置扩容或者缩容规则,否则弹性伸缩将不会启用。 规则类型选择“扩容”或者“缩容”。 单击“添加规则”,进入规则编辑页面。 图2 添加规则 配置“规则名称”、“如果”、“持续”、“添加”、“冷却时间”,具体弹性伸缩指标含义可以参考MRS集群Task节点弹性伸缩概述。 单击“确定”。 您可以在弹性伸缩页面,扩容或者缩容区域查看、编辑或删除配置的规则。您可以继续添加并配置多条规则。 单击“确定”,完成弹性伸缩规则设置。 如果是为已有集群配置弹性伸缩的场景,需勾选“我同意授权MRS服务根据以上策略自动进行节点扩容/缩容操作。”。
  • 为已有MRS集群新增弹性伸缩策略 集群创建成功后,可以通过节点组维度或资源池维度对集群内的Task节点组配置相关规则。 由于节点组维度策略和资源池维度策略互斥,用户根据实际需要选择其中一个配置即可。 指定资源池维度策略在MRS 3.1.5及其之后版本支持。 对比项 节点组维度 资源池维度 弹性伸缩对象 Task节点组内的所有节点 弹性伸缩策略指定资源池内的Task节点 扩容节点资源池归属 default资源池 弹性伸缩策略指定资源池 缩容对象 Task节点组内随机缩容 弹性伸缩策略指定资源池内随机缩容 前提条件 弹性伸缩仅用于Task节点组,当集群内没有Task节点组时,需先添加Task节点组后再继续配置。 资源池维度时必须先添加资源池,具体请参考添加MRS租户资源池。 操作步骤 登录MRS管理控制台。 选择“现有集群”,选中一个运行中的集群并单击集群名称。进入集群详情页面。 选择“弹性伸缩”页签,进入配置弹性伸缩界面。 用户根据实际需要选择资源池维度或者节点组维度进行策略配置。 不同节点组之间的弹性伸缩策略互斥,即只能存在一个节点组有开启的弹性伸缩策略。 弹性伸缩规则可调控节点数量,也会对实际价格有影响,请谨慎操作。 单击“新增弹性伸缩”按钮,即可添加弹性伸缩策略。 您可以参考以下场景进行配置: 场景一:单独配置弹性伸缩规则 场景二:单独使用资源计划 场景三:弹性伸缩规则与资源计划叠加使用
  • 创建MRS集群时配置弹性伸缩 创建集群时,弹性伸缩功能可以通过在高级配置参数中进行配置。 仅分析集群、流式集群和混合集群支持创建集群时配置弹性伸缩策略。 登录MRS管理控制台。 在购买包含有Task类型节点组件的集群时,参考自定义购买MRS集群配置集群软件配置和硬件配置信息后,在“高级配置”页签的弹性伸缩栏,打开对应Task节点类型后的开关按钮,即可进行弹性伸缩规则及资源计划的配置或修改。 图1 创建集群时配置弹性伸缩 您可以参考以下场景进行配置: 场景一:单独配置弹性伸缩规则 场景二:单独使用资源计划 场景三:弹性伸缩规则与资源计划叠加使用
  • MRS集群节点弹性伸缩指标说明 节点组维度策略 在添加规则时,可以参考表1配置相应的指标。 表1 弹性伸缩指标列表 集群类型 指标名称 数值类型 说明 流式集群 StormSlotAvailable 整型 Storm组件的可用slot数。 取值范围为[0~2147483646]。 StormSlotAvailablePercentage 百分比 Storm组件可用slot百分比。是可用slot数与总slot数的比值。 取值范围为[0~100]。 StormSlotUsed 整型 Storm组件的已用slot数。 取值范围为[0~2147483646]。 StormSlotUsedPercentage 百分比 Storm组件已用slot百分比。是已用slot数与总slot数的比值。 取值范围为[0~100]。 StormSupervisorMemAverageUsage 整型 Storm组件Supervisor的内存平均使用量。 取值范围为[0~2147483646]。 StormSupervisorMemAverageUsagePercentage 百分比 Storm组件Supervisor进程使用的内存占系统总内存的平均百分比。 取值范围[0 ~ 100]。 StormSupervisorCPUAverageUsagePercentage 百分比 Storm组件Supervisor进程使用的CPU占系统总CPU的平均百分比。 取值范围[0 ~ 6000]。 分析集群 YARNAppPending 整型 YARN组件挂起的任务数。 取值范围为[0~2147483646]。 YARNAppPendingRatio 比率 YARN组件挂起的任务数比例。是YARN挂起的任务数与YARN运行中的任务数比值。 取值范围为[0~2147483646]。 YARNAppRunning 整型 YARN组件运行中的任务数。 取值范围为[0~2147483646]。 YARNContainerAllocated 整型 YARN组件中已分配的container个数。 取值范围为[0~2147483646]。 YARNContainerPending 整型 YARN组件挂起的container个数。 取值范围为[0~2147483646]。 YARNContainerPendingRatio 比率 YARN组件挂起的container比率。是挂起的container数与运行中的container数的比值。 取值范围为[0~2147483646]。 YARNCPUAllocated 整型 YARN组件已分配的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNCPUAvailable 整型 YARN组件可用的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNCPUAvailablePercentage 百分比 YARN组件可用虚拟CPU核心数百分比。是可用虚拟CPU核心数与总虚拟CPU核心数比值。 取值范围为[0~100]。 YARNCPUPending 整型 YARN组件挂起的虚拟CPU核心数。 取值范围为[0~2147483646]。 YARNMemoryAllocated 整型 YARN组件已分配内存大小。单位为MB。 取值范围为[0~2147483646]。 YARNMemoryAvailable 整型 YARN组件可用内存大小。单位为MB。 取值范围为[0~2147483646]。 YARNMemoryAvailablePercentage 百分比 YARN组件可用内存百分比。是YARN组件可用内存大小与YARN组件总内存大小的比值。 取值范围为[0~100]。 YARNMemoryPending 整型 YARN组件挂起的内存大小。 取值范围为[0~2147483646]。 表1中指标数值类型为百分比或比率时,有效数值可精确到百分位。其中百分比类型指标数值为去除百分号(%)后的小数值,如16.80即代表16.80%。 混合集群的支持分析集群和流式集群的所有指标。 资源池维度策略 在添加规则时,可以参考表2配置相应的指标。 MRS 3.1.5及其之后的版本支持配置资源池维度策略。 表2 规则配置项说明 集群类型 指标名称 数值类型 说明 分析集群/自定义集群 ResourcePoolMemoryAvailable 整型 资源池YARN组件可用内存大小。单位为MB。 取值范围为[0~2147483646]。 ResourcePoolMemoryAvailablePercentage 百分比 资源池YARN组件可用内存百分比。是YARN组件可用内存大小与YARN组件总内存大小的比值。 取值范围为[0~100]。 ResourcePoolCPUAvailable 整型 资源池YARN组件可用的虚拟CPU核心数。 取值范围为[0~2147483646]。 ResourcePoolCPUAvailablePercentage 百分比 资源池YARN组件可用虚拟CPU核心数百分比。是可用虚拟CPU核心数与总虚拟CPU核心数比值。 取值范围为[0~100]。 在添加资源计划时,可以参考表3配置相应的参数。 表3 资源计划配置项说明 配置项 示例 说明 生效日期 周一 资源计划的生效日期。默认是每日生效,也可以选择周一至周日任意一天或几天生效。 时间范围 08:00-10:00 资源计划的起始时间和结束时间,精确到分钟,取值范围[00:00, 23:59]。例如资源计划开始于早上8:00,结束于10:00,则配置为8:00-10:00。结束时间必须晚于开始时间至少30分钟。 节点数量范围 4-5 资源计划内的节点数量上下限,取值范围[0,500],在资源计划时间内,集群Task节点数量小于最小节点数时,弹性伸缩会将集群Task节点一次性扩容到最小节点数。在资源计划时间内,集群Task节点数量大于最大节点数时,弹性伸缩会将集群Task节点一次性缩容到最大节点数。最小节点数必须小于或等于最大节点数。 当启用资源计划时,弹性伸缩配置中的“默认节点数量范围”将在资源计划外的时间段内强制生效。例如“默认节点数量范围”配置为1-2,配置资源计划:08:00-10:00之间节点数量范围为4-5,则在一天中的非资源计划时间段(0:00-8:00以及10:00-23:59)内,Task节点会被强制限制在1个到2个中间,若节点数量大于2则触发自动缩容,若节点数量小于1则触发自动扩容。 当不启用资源计划时,节点数量范围的“默认范围”会在全部时间范围生效,如果节点数量不在“节点数量范围”的默认范围,主动增减Task节点数量到默认范围内。 资源计划间时间段不可交叉,时间段交叉意为某个时间点存在两个生效的资源计划,例如配置资源计划1在08:00-10:00生效,资源计划2在09:00-11:00生效,则两个资源计划存在时间段交叉,交叉时间段09:00-10:00。 资源计划不能跨天配置,例如要配置23:00至次日01:00的资源计划,请配置时间段为23:00-00:00和00:00-01:00的两个资源计划。 自动化脚本 在添加自动化脚本时,可以参考表4配置相应参数。 表4 自动化脚本配置说明 配置项 示例 说明 名称 test 自动化脚本的名称。 只能由数字、英文字符、空格、中划线和下划线组成,且不能以空格开头。 可输入的字符串长度为1~64个字符。 说明: 同一集群内,不允许配置相同的名称。不同集群之间,可以配置相同的名称。 脚本路径 obs://mrs-samples/test.sh 脚本的路径。路径可以是OBS文件系统的路径或虚拟机本地的路径。 OBS文件系统的路径,必须以obs://开头,以.sh结尾。例如:obs://mrs-samples/xxx.sh 虚拟机本地的路径,脚本所在的路径必须以‘/’开头,以.sh结尾。例如,安装Zepelin的示例脚本路径如下:/opt/bootstrap/zepelin/zepelin_install.sh 执行节点 Mater节点 选择自动化脚本所执行的节点类型。 说明: 如果选择Master节点,您可以通过开关选择是否只在Active Master节点执行此脚本。 如果选择开启此功能,表示只在Active Master节点上执行。如果选择关闭,表示在所有Master节点执行。默认关闭。 参数 - 自动化脚本参数,支持通过传入以下预定义变量获得弹性伸缩相关信息: ${mrs_scale_node_num} :弹性伸缩节点数量,总是正数 ${mrs_scale_type} :弹性伸缩类型,扩容为“scale_out”,缩容为“scale_in” ${mrs_scale_node_hostnames} :弹性伸缩节点的主机名,多个主机名之间以“,”隔开 ${mrs_scale_node_ips} :弹性伸缩节点的IP,多个IP之间以“,”隔开 ${mrs_scale_rule_name}:触发弹性伸缩的规则名,如果是资源计划则为“resource_plan” 执行时机 扩容前 选择自动化脚本执行的时间。支持“扩容前”、“扩容后”、“缩容前”、“缩容后”四种类型。 说明: 假设执行节点类型中包含Task节点: 执行时机为扩容前的脚本不会在将要扩容出的Task节点上执行。 执行时机为扩容后的脚本会在扩容出的Task节点上执行。 执行时机为缩容前的脚本会在即将被删除的Task节点上执行。 执行时机为缩容后的脚本不会在已经被删除的Task节点上执行。 失败操作 继续 该脚本执行失败后,是否继续执行后续脚本和扩缩容操作。 说明: 建议您在调试阶段设置为“继续”,无论此脚本是否执行成功,则集群都能继续扩缩容操作。 若脚本执行失败,请到集群虚拟机的“/var/log/Bootstrap”路径下查看失败日志。 由于缩容成功不可回滚,缩容后执行的脚本失败操作只能选择“继续”。 自动化脚本只在弹性伸缩时触发,手动调整集群节点时不会运行。
  • Cluster Autoscaler工作原理 Cluster Autoscaler主要流程包括两部分: ScaleUp流程: Autoscaler会每隔10s检查一次所有未调度的Pod,根据用户设置的策略,选择出一个符合要求的节点池进行扩容。 Autoscaler检测未调度Pod进行扩容时,使用的是与Kubernetes社区版本一致的调度算法进行模拟调度计算,若应用调度采用非内置kube-scheduler调度器或其他非Kubernetes社区调度策略,此类应用使用Autoscaler扩容时可能因调度算法不一致出现无法扩容或多扩风险。 ScaleDown流程:Autoscaler每隔10s会扫描一次所有的Node,如果该Node上所有的Pod Requests少于用户定义的缩容百分比时,Autoscaler会模拟将该节点上的Pod是否能迁移到其他节点,如果可以的话,当满足不被需要的时间窗以后,该节点就会被移除。 当集群节点处于一段时间空闲状态时(默认10min),会触发集群缩容操作(即节点会被自动删除)。当节点存在以下几种状态的Pod时,不可缩容: Pod有设置Pod Disruption Budget(即干扰预算),当移除Pod不满足对应条件时,节点不会缩容。 Pod由于一些限制,如亲和、反亲和等,无法调度到其他节点,节点不会缩容。 Pod拥有cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'这个annotations时,节点不缩容。 节点上存在kube-system命名空间下的Pod(除kube-system命名空间下由DaemonSet创建的Pod),节点不缩容。 节点上如果有非controller(Deployment/ReplicaSet/Job/StatefulSet)创建的Pod,节点不缩容。 当节点符合缩容条件时,Autoscaler将预先给节点打上DeletionCandidateOfClusterAutoscaler污点,限制Pod调度到该节点上。当autoscaler插件被卸载后,如果节点上依然存在该污点请您手动进行删除。
  • AutoScaler重试扩容的周期说明 当节点池扩容因为资源售罄、配额不足、节点安装过程中错误等原因失败时,AutoScaler 能够重试同一节点池或者切换其他节点池扩容,重试扩容的周期如下: 当节点池资源售罄或者用户配额不足时,AutoScaler将按照5min、10min、20min对节点池进行冷却,最多冷却30min。 同时AutoScaler将在下一个10s切换其他节点池进行扩容,直到扩容出期望的节点或者所有节点池都进入冷却。 当节点池在节点安装过程中发生错误时,节点池会进入5min冷却期。 冷却期过后,AutoScaler才可以重新触发该节点池扩容。 当安装过程中的错误节点被自动回收后,Cluster AutoScaler将在1min内重新评估集群状态,按需触发节点池扩容。 在节点池扩容时,如果节点池节点长时间处于安装中状态,Cluster AutoScaler将最多容忍此类节点15min,超过容忍时间后,将重新评估集群状态,按需触发节点池扩容。
  • 冷却时间说明 节点池中配置的两个冷却时间之间的影响和关系如下: 弹性扩容中的冷却时间 弹性缩容冷却时间:当前节点池扩容出的节点多长时间不能被缩容,作用范围为节点池级别。 弹性缩容中的冷却时间 扩容后缩容冷却时间:autoscaler触发扩容后(不可调度、指标、周期策略)整个集群多长时间内不能被缩容,作用范围为集群级别。 节点删除后缩容冷却时间:autoscaler触发缩容后整个集群多长时间内不能继续缩容,作用范围为集群级别。 缩容失败后缩容冷却时间:autoscaler触发缩容失败后整个集群多长时间内不能继续缩容,作用范围为集群级别。
  • 配置节点池弹性伸缩策略 在CCE控制台,单击集群名称进入集群。 单击左侧导航栏的“节点管理”,在目标节点池所在行右上角单击“弹性伸缩”。 若未安装autoscaler插件,请根据业务需求配置插件参数后单击“安装”,并等待插件安装完成。插件配置详情请参见CCE集群弹性引擎。 若已安装autoscaler插件,则可直接配置弹性伸缩策略。 配置节点池弹性伸缩策略。 伸缩配置 自定义扩容规则:单击“添加规则”,在弹出的添加规则窗口中设置参数。您可以设置多条节点弹性策略,最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 规则类型可选择“指标触发”或“周期触发”,两种类型区别如下: 表1 自定义规则类型 规则类型 参数设置 指标触发 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 说明: 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 如果多条规则同时满足条件,会有如下两种执行的情况: 如果同时配置了“CPU分配率”和“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。 如果同时配置了“CPU分配率”和“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。 配置了“CPU分配率”和“内存分配率”的规则后,策略的检测周期会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(还需要满足冷却时间、节点池状态等约束条件)。 当集群中的节点数已到达集群规模上限时,或CPU、内存达到autoscaler插件设置的上限时,将不会触发指标扩容。 执行动作:达到触发条件后所要执行的动作。 自定义:为节点池增加指定数量的节点。 自动计算:当达到触发条件时,自动扩容节点,将分配率恢复到触发条件以下。计算公式如下: 扩容节点数 = 节点池容器组(Pod)资源申请值 / (单节点可用资源值 * 目标分配率) - 当前节点数 + 1 周期触发 触发时间:可选择每天、每周、每月或每年的具体时间点。 执行动作:达到触发时间值后所要执行的动作,为节点池增加指定数量的节点。 节点数范围:弹性伸缩时节点池下的节点数量会始终介于节点数范围内。 冷却时间:指当前节点池扩容出的节点多长时间不能被缩容。 伸缩对象 规格选择:对节点池中的节点规格单独设置是否开启弹性伸缩。 查看集群级别的弹性伸缩配置,集群级别的配置对所有节点池生效。当前页面仅支持查看集群级别的弹性伸缩策略,如需修改请前往“配置中心”进行设置,详情请参见配置集群弹性伸缩策略。 设置完成后,单击“确定”。
  • 约束限制 仅按需计费节点池支持弹性伸缩。 当节点池中节点为0时,autoscaler插件无法获取节点CPU/内存数据,指标触发的节点弹性规则将不会生效。 GPU/NPU节点驱动未安装成功时,autoscaler插件会认为该节点未完全可用,通过CPU/内存指标触发的节点弹性规则将不会生效。 缩容节点会导致与节点关联的本地持久卷类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。缩容节点时使用了本地持久存储卷的Pod会从缩容的节点上被驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。 使用autoscaler插件时,部分污点/注解可能会影响弹性伸缩功能,因此集群中应避免使用以下污点/注解: 节点避免使用ignore-taint.cluster-autoscaler.kubernetes.io的污点:该污点作用于节点。由于autoscaler原生支持异常扩容保护策略,会定期评估集群的可用节点比例,非Ready分类节点数统计比例超过45%比例会触发保护机制;而集群中任何存在该污点的节点都将从自动缩放器模板节点中过滤掉,记录到非Ready分类的节点中,进而影响集群的扩缩容。 Pod避免使用cluster-autoscaler.kubernetes.io/enable-ds-eviction的注解:该注解作用于Pod,控制DaemonSet Pod是否可以被autoscaler驱逐。详情请参见Kubernetes原生的标签、注解和污点。
  • 操作步骤 在CCE控制台,单击左侧导航栏的“弹性伸缩”,在“节点伸缩”页签下,单击“创建节点伸缩策略”按钮。 进入创建节点伸缩策略页面,在“插件检测”步骤中: 若插件名称后方显示,请单击插件后方的“现在安装”按钮,根据业务需求配置插件参数后单击“立即安装”,等待插件安装完成。 若插件名称后方显示,则说明插件已安装成功。 确认插件已安装成功后,单击“下一步:策略配置”。 如果插件已提前安装成功,单击“创建节点伸缩策略”按钮后,在“插件检测”步骤中经过短暂检测后将直接进入“策略配置”步骤。 在打开的“创建节点伸缩策略”页面中,参照如下参数设置策略。 策略名称:新建策略的名称,请自定义。 关联节点池:请单击“添加节点池”后选择要操作的节点池。您可以关联多个节点池,以使用相同的伸缩策略。 节点池新增了优先级功能,弹性扩容时CCE将按照如下策略来选择节点池进行扩容: 通过预判算法判断节点池是否能满足让Pending的Pod正常调度的条件,包括节点资源大于Pod的request值、nodeSelect、nodeAffinity和taints等是否满足Pod正常调度的条件;另外还会过滤掉扩容失败(因为资源不足等原因)还处于15min冷却时间的节点池。 有多个节点池满足条件时,判断节点池设置的优先级(优先级默认值为0,取值范围为0-100,其中100为最高,0为最低),选择优先级最高的节点池扩容。 如果有多个节点池处于相同的优先级,或者都没有配置优先级时,通过最小浪费原则,根据节点池里设置的虚拟机规格,计算刚好能满足Pending的Pod正常调度,且浪费资源最少的节点池。 如果还是有多个节点池的虚拟机规格都一样,只是AZ不同,那么会随机选择其中一个节点池触发扩容。 如果出现优先选择的节点池资源不足,会按照优先级顺序自动选择下一个节点池。 节点池优先级功能详情请参见弹性扩缩容。 执行规则:单击“添加规则”,在弹出的添加规则窗口中设置如下参数: 规则名称:请输入规则名称,可自定义。 规则类型:可选择“指标触发”或“周期触发”,两种类型区别如下: 指标触发: 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 如果多条规则同时满足条件,会有如下两种执行的情况: 如果同时配置了“CPU分配率”和“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。 如果同时配置了“CPU分配率”和“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。 配置了“CPU分配率”和“内存分配率”的规则后,策略的检测周期会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(还需要满足冷却时间、节点池状态等约束条件)。 执行动作:与上述“触发条件”相对应,达到触发条件值后所要执行的动作。如图1中所示,当内存分配率超过40%时将增加5个节点。 图1 指标触发-执行动作 周期触发: 触发时间:可选择每天、每周、每月或每年的具体时间点,如图2所示,则为每天15:00触发。 图2 周期触发时间 执行动作:与上述“触发时间”相对应,达到触发时间值后所要执行的动作。如图3中所示,即每天15:00时将执行增加5个节点的动作。 图3 定时触发-执行动作 您可以单击“添加规则”,设置多条节点伸缩策略。您最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 设置完成后,单击“创建”,在“完成”步骤中若显示“创建节点伸缩策略***任务提交成功”,可单击“返回节点策略”。 在“节点伸缩”页签下,可以看到刚创建的节点伸缩策略。 图4 节点伸缩策略