创建ECI伸缩组

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

伸缩组是具有相同应用场景、相同实例类型(即ECS或ECI实例)的一组实例集合。使用ECI实例来运行容器应用时,可以配合使用弹性伸缩服务,实现根据业务量自动增加或者减少ECI实例,在保证业务正常运行的同时节约使用成本。

操作步骤

在操作之前,您需要先明确您创建伸缩组的方式,阿里云提供多种创建伸缩组的方式。您可以根据您的实际情况,参考以下指引快速创建伸缩组。

方式一:基于现有ECI实例的配置创建伸缩组

您期望使用现有实例的配置创建ECI伸缩组,可以参考以下步骤完成伸缩组的创建。

  1. 进入创建伸缩组页面。

    1. 登录弹性伸缩控制台

      说明

      如果您是第一次使用弹性伸缩,请根据界面提示开通弹性伸缩的权限。具体操作,请参见服务关联角色

    2. 在顶部菜单栏处,选择地域。
    3. 在左侧导航栏中,单击伸缩组管理
    4. 伸缩组管理页面,单击创建伸缩组按钮进入创建伸缩组页面。

  2. 单击顶部通过表单创建页签,根据界面提示完成伸缩组的配置。

    您可以参考以下必选配置项说明,快速使用现有ECI实例的配置创建ECI伸缩组,更多配置项说明,请参见配置项说明

    必选配置项说明

    配置项

    说明

    伸缩组名称

    根据界面提示完成伸缩组名称的配置。

    伸缩组类型

    选择创建的伸缩组内的实例类型,选择ECI

    组内实例配置信息来源

    选择选择已有实例。伸缩组会以该实例的配置进行新实例的创建。

    组内最小实例数

    伸缩组实例内实例数量的下限,当实例数量低于这个边界时,伸缩组会尝试自动添加实例。

    组内最大实例数

    伸缩组实例内实例数量的上限,当实例数量低于这个边界时,伸缩组会自动移出实例。

    默认冷却时间

    单位为秒,伸缩组发生伸缩活动后的默认冷却时间。您可以使用默认设置300秒,更多说明,请参见冷却时间

    专有网络

    您伸缩组下的所有实例都将在该专有网络下创建。在您通过已有ECI实例创建时,专有网络会根据您选择的ECI实例自动配置,您也可以再次修改。

    警告

    在伸缩组创建后,专有网络不可变更。

    选择交换机

    在您选择专有网络后,您可以选择您专有网络下的交换机。您伸缩组下的所有的实例将在该交换机下创建。

    重要

    推荐您选择多个可用区的交换机,单一可用区如果库存不足会产生库存失败的情况。

  3. 单击创建按钮完成伸缩组的创建。

说明
  • 基于现有ECI实例创建伸缩组时,会自动为伸缩组创建一个伸缩配置,如需管理伸缩配置,请参见管理伸缩配置

  • 如果您希望立即使伸缩组开始工作,请启用伸缩组。具体操作,请参见启用或停用伸缩组

方式二:从零开始创建ECI伸缩组

您期望稍后创建伸缩组的实例配置来源,可以参考以下步骤完成伸缩组的创建。

  1. 进入创建伸缩组页面。

    1. 登录弹性伸缩控制台

      说明

      如果您是第一次使用弹性伸缩,请根据界面提示开通弹性伸缩的权限。具体操作,请参见服务关联角色

    2. 在顶部菜单栏处,选择地域。
    3. 在左侧导航栏中,单击伸缩组管理
    4. 伸缩组管理页面,单击创建伸缩组按钮进入创建伸缩组页面。

  2. 单击顶部通过表单创建页签,根据界面提示完成伸缩组的配置。

    您可以参考以下必选配置项说明,快速从零创建ECI伸缩组,更多配置项说明,请参见配置项说明

    必选配置项说明

    配置项

    说明

    伸缩组名称

    根据界面提示完成伸缩组名称的配置。

    伸缩组类型

    选择创建的伸缩组内的实例类型,选择ECI

    说明

    本指南用于创建ECI伸缩组,如需创建ECS伸缩组,请参见创建ECS伸缩组

    组内实例配置信息来源

    选择从零开始创建。您可以先创建伸缩组,再配置组内实例配置信息来源。具体操作说明,请参见实例配置来源概述

    组内最小实例数

    伸缩组实例内实例数量的下限,当实例数量低于这个边界时,伸缩组会尝试自动添加实例。

    组内最大实例数

    伸缩组实例内实例数量的上限,当实例数量低于这个边界时,伸缩组会自动移出实例。

    默认冷却时间

    单位为秒,伸缩组发生伸缩活动后的默认冷却时间。您可以使用默认设置300秒,更多说明,请参见冷却时间

    专有网络

    您伸缩组下的所有实例都将在该专有网络下创建。在您通过已有ECI实例创建时,专有网络会根据您选择的ECI实例自动配置,您也可以再次修改。

    警告

    在伸缩组创建后,专有网络不可变更。

    选择交换机

    在您选择专有网络后,您可以选择您专有网络下的交换机。您伸缩组下的所有的实例将在该交换机下创建。

    重要

    推荐您选择多个可用区的交换机,单一可用区如果库存不足会产生库存失败的情况。

  3. 单击创建按钮完成伸缩组的创建。

说明

在创建伸缩组后,您可以根据界面提示进入创建伸缩配置页面,也可以稍后为伸缩组创建伸缩配置,具体操作,请参见创建伸缩配置(ECI实例)

方式三:通过Kubernetes YAML文件来创建ECI伸缩组

如果您期望通过类似Kubernetes YAML的方式来快速管理ECI伸缩组,可以参考以下步骤通过YAML文件完成伸缩组的创建操作。

控制台创建

以使用Nginx:latest镜像为例,通过控制台使用YAML文件创建ECI伸缩组的步骤如下。

  1. 进入创建伸缩组页面。

    1. 登录弹性伸缩控制台

      说明

      如果您是第一次使用弹性伸缩,请根据界面提示开通弹性伸缩的权限。具体操作,请参见服务关联角色

    2. 在顶部菜单栏处,选择地域。
    3. 在左侧导航栏中,单击伸缩组管理
    4. 伸缩组管理页面,单击创建伸缩组按钮进入创建伸缩组页面。

  2. 单击顶部通过YAML创建页签,完成YAML文件的编写。

    您可以参考以下YAML文件完成配置。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
      annotations:
        # 伸缩组名称
        k8s.aliyun.com/ess-scaling-group-name: use-yaml-create-scaling-group
        # 伸缩组最小实例数
        k8s.aliyun.com/ess-scaling-group-min-size: '0'
        # 伸缩组最大实例数
        k8s.aliyun.com/ess-scaling-group-max-size: '5'
    spec:
      selector:
        matchLabels:
          app: nginx-demo
      # 伸缩组期望实例数
      replicas: 1
      template:
        metadata:
          labels:
              app: nginx-demo
          annotations:
            # 是否自动创建并绑定EIP
            k8s.aliyun.com/eci-with-eip: 'true'
            # 交换机ID,支持配置同一VPC下的至多8个交换机,使用逗号隔开
            k8s.aliyun.com/eci-vswitch: vsw-bp******1,vsw-bp******2,vsw-bp******3,vsw-bp******4
            # 安全组ID,支持配置同一VPC下的至多5个安全组,使用逗号隔开
            k8s.aliyun.com/eci-security-group: sg-bp******1,sg-bp******2
        spec:
          containers:
            - name: nginx
              # 镜像
              image: nginx:latest
              ports:
                - containerPort: 80
                  name: http
                - containerPort: 443
                  name: https
              resources:
                requests:
                  memory: 0.05Gi
                  cpu: 50m
                limits:
                  memory: 1Gi
                  cpu: '1'
    

    YAML文件参数说明如下。更多支持的参数说明,请参见YAML配置项说明

    示例YAML文件参数项说明

    参数

    说明

    示例

    k8s.aliyun.com/ess-scaling-group-name

    伸缩组的名称。

    use-yaml-create-scaling-group

    k8s.aliyun.com/ess-scaling-group-min-size

    伸缩组最小实例数。

    0

    k8s.aliyun.com/ess-scaling-group-max-size

    组内最大实例数。

    5

    k8s.aliyun.com/eci-with-eip

    是否自动分配EIP,true代表自动分配EIP。

    true

    k8s.aliyun.com/eci-vswitch

    交换机ID,支持配置同一VPC下的多个交换机,通过逗号隔开,最多支持8个交换机。

    重要

    不指定专有网络和交换机时,ESS会使用或创建默认专有网络与交换机,默认专有网络和交换机

    vsw-bp******1,vsw-bp******2,vsw-bp******3

    k8s.aliyun.com/eci-security-group: sg-bp******

    安全组ID,支持配置同一VPC下的多个安全组,最多支持5个安全组。

    重要

    安全组需和交换机在同一VPC下。

    sg-bp******1,sg-bp******2

  3. 单击创建按钮完成伸缩组的创建。

阿里云CLI(命令行)

您可以通过阿里云CLI使用命令行管理伸缩组。以使用Nginx:latest镜像为例,通过阿里云CLI使用YAML文件创建ECI伸缩组的步骤如下。

重要

在操作前,请确保您已安装阿里云CLI,并为阿里云CLI配置凭证和环境变量。具体操作,请参见什么是阿里云CLI

  1. 创建use-yaml-create-scaling-group.yaml文件,文件内容如下。

    您可以参考以下YAML文件完成配置。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
      annotations:
        # 伸缩组名称
        k8s.aliyun.com/ess-scaling-group-name: use-yaml-create-scaling-group
        # 伸缩组最小实例数
        k8s.aliyun.com/ess-scaling-group-min-size: '0'
        # 伸缩组最大实例数
        k8s.aliyun.com/ess-scaling-group-max-size: '5'
    spec:
      selector:
        matchLabels:
          app: nginx-demo
      # 伸缩组期望实例数
      replicas: 1
      template:
        metadata:
          labels:
              app: nginx-demo
          annotations:
            # 是否自动创建并绑定EIP
            k8s.aliyun.com/eci-with-eip: 'true'
            # 交换机ID,支持配置同一VPC下的至多8个交换机,使用逗号隔开
            k8s.aliyun.com/eci-vswitch: vsw-bp******1,vsw-bp******2,vsw-bp******3,vsw-bp******4
            # 安全组ID,支持配置同一VPC下的至多5个安全组,使用逗号隔开
            k8s.aliyun.com/eci-security-group: sg-bp******1,sg-bp******2
        spec:
          containers:
            - name: nginx
              # 镜像
              image: nginx:latest
              ports:
                - containerPort: 80
                  name: http
                - containerPort: 443
                  name: https
              resources:
                requests:
                  memory: 0.05Gi
                  cpu: 50m
                limits:
                  memory: 1Gi
                  cpu: '1'
    

    YAML文件参数说明如下。更多支持的参数说明,请参见YAML配置项说明

    示例YAML文件参数项说明

    参数

    说明

    示例

    k8s.aliyun.com/ess-scaling-group-name

    伸缩组的名称。

    use-yaml-create-scaling-group

    k8s.aliyun.com/ess-scaling-group-min-size

    伸缩组最小实例数。

    0

    k8s.aliyun.com/ess-scaling-group-max-size

    组内最大实例数。

    5

    k8s.aliyun.com/eci-with-eip

    是否自动分配EIP,true代表自动分配EIP。

    true

    k8s.aliyun.com/eci-vswitch

    交换机ID,支持配置同一VPC下的多个交换机,通过逗号隔开,最多支持8个交换机。

    重要

    不指定专有网络和交换机时,ESS会使用或创建默认专有网络与交换机,默认专有网络和交换机

    vsw-bp******1,vsw-bp******2,vsw-bp******3

    k8s.aliyun.com/eci-security-group: sg-bp******

    安全组ID,支持配置同一VPC下的多个安全组,最多支持5个安全组。

    重要

    安全组需和交换机在同一VPC下。

    sg-bp******1,sg-bp******2

  2. 在use-yaml-create-scaling-group.yaml同级目录下,执行如下命令完成伸缩组的创建。

    重要
    • 本示例以在杭州地域下创建伸缩组为例,您可以根据您的需求,将参数--RegionId修改为您希望创建伸缩组的地域。

    • 该命令通过调用CLI调用ApplyScalingGroup实现,具体接口说明,请参见ApplyScalingGroup - 基于配置文件管理伸缩组

    aliyun ess ApplyScalingGroup  --RegionId cn-hangzhou --Content "$(cat test-aliyun-cli-create-group.yaml)" --version 2022-02-22 --method POST --force

配置项说明

伸缩组基本信息配置

配置项

说明

伸缩组名称

2~64个字符,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)和短划线(-)。

伸缩组类型

指定伸缩组内提供计算能力的实例的类型,弹性伸缩会根据该配置为伸缩组扩缩容对应的实例。

  • ECS:伸缩组内的实例都为ECS实例。

  • ECI:伸缩组内的实例都为ECI实例。

组内实例配置信息来源

弹性伸缩使用该配置创建实例。伸缩组支持以下实例配置信息来源类型:

  • 启动模板:包含除了密码以外的任意配置信息,如密钥对、RAM角色、实例类型和网络设置等。仅伸缩组类型ECS时,支持配置该项。

    单一实例规格可能会因库存不足导致扩容失败,您可以通过设置扩展启动模板配置选择多个实例规格提升扩容成功率,详情请参见基于启动模板实现多规格配置以提升扩容成功率

  • 选择已有实例:您需要选择已创建的实例,弹性伸缩会自动提取该实例的基础配置信息,创建一个默认伸缩配置。

    重要
    • 从ECS实例提取的伸缩配置包括该ECS实例的实例规格、网络类型、安全组、基础镜像等基础配置,不包括登录密码、标签。其中,基础镜像是已有实例使用的基础镜像,不包括该实例的数据信息,如应用程序。如果您想使伸缩配置包括该实例的所有系统配置和数据信息,请创建该实例的自定义镜像。

  • 从零开始创建:先不指定自动创建实例的模板。等伸缩组创建完成后,再继续创建伸缩配置或指定启动模板。伸缩组类型不同,创建伸缩配置的具体操作不同,更多信息,请参见创建伸缩配置(ECS实例)创建伸缩配置(ECI实例)

说明

ECS控制台入口基于实例创建伸缩组时,弹性伸缩自动填入组内实例配置信息来源、网络类型相关的信息,请保持默认,无需修改。

暂停的流程

方便您在执行某些操作前主动暂停指定的流程,例如暂停健康检查流程后再去停止实例,避免实例被视为不健康而自动移出伸缩组。支持暂停的流程如下:

  • 扩容流程:伸缩组拒绝所有扩容动作。

  • 缩容流程:伸缩组拒绝所有缩容动作。

  • 健康检查:暂停将实例标记为不健康状态,并暂停移出不健康的实例。

  • 定时任务:到定时任务的执行时间后,不会触发关联的伸缩规则。

  • 报警任务:报警任务进入报警状态后,不会触发关联的伸缩规则。

更多信息,请参见暂停和恢复伸缩组流程

开启伸缩组保护

开启伸缩组保护后,您不能在弹性伸缩控制台或者通过API删除该伸缩组,有效避免误删除伸缩组。

实例的健康检查

开启健康检查后,伸缩组会定期检查实例的运行状态,如果发现一台实例未处于运行中状态,则判定为不健康并移出该实例。更多信息,请参见伸缩组内实例的生命周期。支持的配置项如下:

  • 不开启:选此选项停用此功能。

  • 实例状态检查:是否对伸缩组内的实例状态做健康检查。

  • 负载均衡健康检查:开启该选项后会根据ALB或NLB的负载均衡健康检查结果进行健康检查。(不支持传统型负载均衡CLB)

实例最大生命时长(秒)

实例在伸缩组中存活的最大时间,当伸缩组中存在超过最大生命时长的实例时,伸缩组会自动创建新实例来替换该实例。

说明

伸缩组类型ECS时,支持设置该参数。

组内实例数配置

配置项

说明

组内最小实例数

当前实例数量低于下限时,伸缩组会自动添加实例,使得伸缩组内的实例数量等于下限。

组内最大实例数

当前实例数量超过上限时,伸缩组会自动移出实例,使得伸缩组内的实例数量等于上限。移出实例的策略的说明,请参见设置伸缩组的实例终止策略

组内期望实例数

填写组内期望实例数即可开启期望实例数功能,伸缩组会自动将实例数量维持在期望实例数。更多信息,请参见期望实例数

组内实例扩缩容设置

重要

ECI伸缩组不支持修改扩缩容策略实例移出策略实例回收模式,ECI伸缩组默认采用的配置如下:

  • 扩缩容策略优先级策略

  • 实例移出策略:先筛选最早伸缩配置对应的实例,再移出最早创建的实例

  • 实例回收模式释放模式

配置项

说明

扩缩容策略

伸缩组默认会根据您配置的交换机的顺序(优先级策略),进行伸缩组的伸缩活动,您可以通过修改扩缩容策略来实现其他策略,伸缩组为您预设了几种伸缩策略,具体策略说明如下。

重要

伸缩组类型ECS,且网络类型专有网络时,支持修改该配置,当伸缩组类型ECI时,默认扩缩容策略优先级策略

  • 优先级策略(默认策略)。

    根据您定义的虚拟交换机扩缩容。当优先级较高的虚拟交换机所在可用区无法创建实例时,自动在下一优先级的虚拟交换机的可用区创建实例。

  • 均衡分布策略

    如果您期望在扩缩容后,保持伸缩组在可用区之间分布均衡从而达成多可用区容灾的效果,您可以采用本策略。如果由于库存不足等原因导致可用区之间ECS实例的数量不均衡,您可以执行再均衡分布操作来平衡ECS实例的分布情况。具体操作,请参见ECS实例再均衡分布

  • 成本优化策略

    当成本在您的决策中优先级比较高,您可以使用成本优化策略。使用该策略,在伸缩活动发生时,会按照实例的vCPU单价从低到高进行尝试创建,当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式计费实例,当抢占式计费实例规格由于库存等原因都无法创建时,自动尝试以按量付费的方式创建,在缩容活动发生时,则会优先移出vCPU单价最高的实例。

  • 自定义组合策略

    使用组合方式自定义容量分布策略。您可使用该策略调整伸缩组内按量实例和抢占式实例的比例,可用区间的容量均衡以及实例规格的选择。

如何配置,请参见配置扩缩容策略

实例移出策略

当需要从伸缩组移出实例时,会先按照策略筛选实例,如果筛选后仍有多台实例满足要求,则随机移出一台。仅伸缩组类型ECS时支持该配置,配置项说明如下:

  • 最早伸缩配置对应的实例:筛选添加时间最早的伸缩配置对应的实例。手动添加的实例没有关联伸缩配置或启动模板,因此不会首先选出手动添加的实例。如果已移出全部关联的实例,仍需要继续移出实例,则随机移出手动添加的实例。

    重要
    • 此参数中,伸缩配置泛指实例配置来源里的伸缩配置和启动模板。

    • 该选项中的时间与启动模板的版本无关,仅与该模板在伸缩组设置的时间有关。例如:

      在伸缩组中先使用了版本2的启动模板,后来伸缩组将使用的启动模板版本回退到版本1,此情况下版本2的启动模板是最早伸缩配置

  • 最早创建的实例:筛选创建时间最早的实例。

  • 最新创建的实例:筛选创建时间最新的实例。

  • 自定义策略:用户自定义实例移出策略,根据函数计算服务名、版本和函数名,筛选出符合自定义策略的实例。

实例移出策略最早伸缩配置对应的实例自定义策略时,可能会出现多个满足条件的实例,您可以通过设置第二段策略来进一步筛选要移出的实例。第二段策略说明如下:

  • --无策略--:不进行第二段筛选。

  • 最早创建的实例:在第一段筛选出的实例中,再筛选创建时间最早的实例。

  • 最新创建的实例:在第一段筛选出的实例中,再筛选创建时间最新的实例。

说明

伸缩组移出实例还受伸缩组的扩缩容策略影响。相关说明,请参见设置伸缩组的实例终止策略

实例回收模式

在移出实例后,伸缩组会通过该配置来对实例进行回收操作。具体回收模式如下:

说明

伸缩组类型ECS,且网络类型专有网络时,支持配置该项。ECI伸缩组默认回收模式为释放模式

  • 释放模式:移出的实例被释放,无资源被保留。在弹性扩张时,弹性伸缩创建新的实例加入伸缩组。

  • 停机回收模式:移出的ECS实例被停用,并触发节省停机效果,部分资源被保留并计费。在弹性扩张时,弹性伸缩优先将停用的ECS实例加入伸缩组,再根据扩张数量决定是否创建新的ECS实例加入伸缩组。该模式可以提高扩缩容的效率,更多信息,请参见选择节省停机模式提高扩缩容效率

    重要
    • 请不要在实例中保留应用数据、日志等,避免实例回收后数据丢失的风险。

    • 停用的实例可能会被释放:

      • 如果您手动减少伸缩组的最大实例数,使现最大实例数比伸缩组内各状态(包括停用中)的实例总数小,弹性伸缩优先释放停用的ECS实例。

      • 因为库存不足或者账号欠费等原因,停用的实例在加入伸缩组时可能会失败,失败后该实例会被释放。

    • 停机回收模式的作用受按量付费实例节省停机模式的影响,更多信息,请参见节省停机模式的“启用条件”、“适用资源”和“触发效果”部分。

  • 强制释放模式:选择该回收模式,在弹性收缩活动中,系统会强制释放处于运行中Running)的实例。

    警告

    强制释放实例相当于断电操作,会导致该实例内存以及存储中的临时数据被擦除,数据无法恢复请您谨慎选择

  • 强制停机回收模式:选择该回收模式,在弹性收缩活动时,强制关机处于运行中Running)的实例。

    警告

    强制关机相当于断电操作,会导致该实例内存以及存储中的临时数据被擦除,数据无法恢复请您谨慎选择

网络配置

重要

组内实例配置信息来源启动模板选择已有实例时,会自动按照启动模板或者选择的实例自动填充网络类型专有网络选择交换机等配置,您也可以根据需求,重新配置伸缩组网络。

配置项

说明

网络类型

您可以根据您的需求选择您伸缩组内实例的网络类型,支持专有网络经典网络

警告

在伸缩组创建后,网络类型不可变更。

重要

推荐您选择专有网络专有网络伸缩组支持更灵活配置伸缩组,如更灵活的伸缩策略、实例回收模式、关联负载均衡器ALB和NLB。更多专有网络的说明,请参见什么是专有网络

专有网络

网络类型专有网络时,支持此配置,在您选择专有网络后,您伸缩组下的所有实例都将在该专有网络下创建。

警告

在伸缩组创建后,专有网络不可变更。

选择交换机

在您选择专有网络后,您可以选择您专有网络下的交换机。您伸缩组下的所有的实例将在该交换机下创建。

重要

推荐您选择多个可用区的交换机,单一可用区如果库存不足会产生库存失败的情况,如果您使用ECS伸缩组,您还可以通过切换扩缩容策略来选择伸缩组中实例在不同可用区的分布。

关联其他云服务

配置项

说明

关联RDS、Redis、MongoDB数据库实例

当您伸缩组的实例需要访问RDS、Redis、MongoDB数据库时,您可能需要自动将伸缩组中的ECS实例或ECI实例的内网IP加入该数据库实例访问的白名单,此时,您可以通过该配置来达到此效果。

说明
  • 一个伸缩组支持关联的数据库实例数量有限。如需查看或手动申请提升配额值,请前往配额中心

  • 目前该配置项仅支持关联RDS实例,如果您需要关联其他云数据库,请参见为伸缩组中的实例关联云数据库

关联传统型负载均衡CLB(原SLB)

伸缩组关联CLB实例后,加入伸缩组的实例会自动添加为CLB实例的后端服务器,处理来自CLB实例转发的访问请求。

您可以指定实例需要加入的服务器组,支持以下两种服务器组:

  • 默认服务器组:用来接收前端请求的实例,如果监听没有设置虚拟服务器组或主备服务器组,默认将请求转发至默认服务器组中的实例。

  • 虚拟服务器组:当您需要将不同的请求转发到不同的后端服务器上时,或需要通过域名和URL进行请求转发时,可以选择使用虚拟服务器组。

如果您同时指定了默认服务器组和多个虚拟服务器组,实例会同时添加至这些服务器组中。

说明

一个伸缩组支持关联的CLB实例和虚拟服务器组数量有限。如需查看或手动申请提升配额值,请前往配额中心

关联负载均衡ALB、NLB服务器组

重要

网络类型专有网络时,支持配置该项。

伸缩组关联ALB、NLB服务器组后,加入伸缩组的实例会自动添加为ALB、NLB服务器组的后端服务器,处理ALB、NLB实例分发的访问请求。您还需指定后端服务器的端口和权重,权重默认为50。权重越高,实例将被分配到越多的访问请求。如果权重为0,则实例不会收到访问请求。

如果您为伸缩组关联了多个ALB、NLB服务器组,加入伸缩组的实例会同时添加至这些服务器组中。

说明

一个伸缩组支持关联的ALB、NLB服务器组数量有限。如需查看或手动申请提升配额值,请前往配额中心

其他配置

配置项

说明

标签

添加标签便于搜索和聚合伸缩组,更多信息,请参见标签

说明

此处的标签适用于伸缩组,如果您需要为伸缩组内实例添加标签,请在伸缩配置或启动模板中设置。

扩容时需要传播给实例的标签

为伸缩组添加一个或多个标签后,您可以继续选择扩容时需要传播给伸缩组内实例的一个或多个标签。

添加已有实例

如果伸缩组类型ECS,且组内实例配置信息来源启动模板选择已有实例时,支持配置该项。

如果同时设置期望实例数并添加已有实例,期望实例数会自动增加。例如,创建伸缩组时设置期望实例数为1,并添加2台已有实例,伸缩组创建完成后,2台已有实例添加至伸缩组,然后期望实例数变为3。

您可以将已有实例的生命周期托管给伸缩组,选择将实例的生命周期托管给伸缩组复选框即可。

  • 如果托管给伸缩组,添加的已有实例因处于不健康状态等原因被自动移出伸缩组,或者被手动移出伸缩组时,会被自动释放。

  • 如果未托管给伸缩组,添加的已有实例移出伸缩组时,不会被自动释放。

说明

支持将包年包月实例添加至伸缩组,但不支持托管包年包月实例。

设置消息接收通知

在伸缩活动成功、失败或者被拒绝时,弹性伸缩支持通过短信、站内信和邮件发送消息通知。更多信息,请参见设置消息接收通知

资源组

通过选择资源组,对伸缩组资源进行分组管理,实现资源的隔离显示和权限控制。更多信息,请参见通过资源组精细化管理伸缩组

同步伸缩组报警规则到云监控

该功能仅支持创建伸缩组时开启或关闭。开启该功能后,系统将为伸缩组新建并关联一个云监控应用分组,伸缩组上的报警规则将在云监控控制台同步显示。

YAML配置项说明

支持的Kubernetes YAML字段

通过Kubernetes YAML方式部署ECI类型伸缩组时,在配置YAML文件时仅支持以下Kubernetes Deployment资源类型中的YAML字段:

说明

您可以参考Kubernetes官网的Deployment示例了解YAML文件的模板结构,YAML字段主要包括kindmetadataspec三部分。

支持的Kubernetes YAML字段

  • kind:资源类型,仅支持Deployment类型。

  • metadata.name:资源名称,伸缩组未使用该字段,生效名称为Annotation中的k8s.aliyun.com/ess-scaling-group-name

  • spec.replicas:Pod副本数,伸缩组中的期望实例数。

  • spec.template.spec:定义了Pod配置。具体支持的功能如下:

    功能

    YAML字段

    说明

    DNS配置

    dnsPolicy

    DNS策略。

    dnsConfig.nameservers

    DNS服务器的IP地址列表。

    dnsConfig.searches

    DNS搜索域列表。

    dnsConfig.options.name

    对象变量名。

    dnsConfig.options.value

    对象变量值。

    容器配置

    contaners.name

    容器名称。

    contaners.image

    容器镜像。

    contaners.command

    容器启动命令。

    contaners.args

    容器启动命令参数。

    contaners.imagePullPolicy

    镜像拉取策略。

    contaners.stdin

    是否为stdin分配缓冲区。

    contaners.stdinOnce

    是否为stdin分配一次性缓冲区。

    contaners.tty

    是否分配TTY。

    contaners.ports

    containerPort

    端口号。

    protocol

    TCP、UDP协议。

    contaners.env

    name

    环境变量名。

    value

    环境变量值。

    contaners.resources

    requests.cpu

    请求的CPU。

    requests.memory

    请求的内存。

    limits.cpu

    限制的CPU。

    limits.memory

    限制的内存。

    limits.nvidia.com/gpu

    可以在Pod metadata中添加Annotation来指定GPU规格。

    指定GPU规格后,需要在Container的resources中添加nvidia.com/gpu字段声明容器所需的GPU资源。

    contaners.securityContext

    runAsUser

    设置运行容器的用户ID。

    readOnlyRootFilesystem

    容器运行的根文件系统是否为只读。

    capabilities.add

    容器内的进程被授予某些特定的权限。

    contaners.volumeMounts

    name

    此字段必须与卷的名称匹配。

    mountPath

    容器内卷的挂载路径。

    mountPropagation

    确定挂载如何从主机传播到容器以及如何反向传播。

    readOnly

    取值范围:

    • true:以只读方式挂载。

    • false:以读写方式挂载。

    默认为 false。

    subPath

    卷中的路径。

    contaners.livenessProbe

    • initialDelaySeconds

    • periodSeconds

    • successThreshold

    • timeoutSeconds

    • failureThreshold

    • exec.command

    • tcpSocket.port

    • httpGet.scheme

    • httpGet.port

    • httpGet.path

    配置存活、就绪和启动探针

    contaners.readinessProbe

    • initialDelaySeconds

    • periodSeconds

    • successThreshold

    • timeoutSeconds

    • failureThreshold

    • exec.command

    • tcpSocket.port

    • httpGet.scheme

    • httpGet.port

    • httpGet.path

    init容器配置

    initContainers.name

    初始化容器名称。

    initContainers.image

    初始化容器镜像。

    initContainers.command

    初始化容器启动命令。

    initContainers.args

    初始化容器启动参数。

    initContainers.imagePullPolicy

    初始化容器镜像拉取策略。

    initContainers.env

    name

    初始化容器环境变量名称。

    value

    初始化容器环境变量值。

    initContainers.resources

    requests.cpu

    初始化容器请求的CPU。

    requests.memory

    初始化容器请求的内存。

    limits.cpu

    初始化容器限制的CPU。

    limits.memory

    初始化容器限制的内存。

    limits.nvidia.com/gpu

    初始化容器实用的GPU。

    initContainers.securityContext

    capabilities.add

    初始化容器内的进程授予某些特定的权限。

    initContainers.volumeMounts

    name

    初始化容器使用的卷名称,此字段必须与卷的名称匹配。

    mountPath

    初始化容器内卷的挂载路径。

    mountPropagation

    确定挂载如何从主机传播到初始化容器,以及如何反向传播。

    readOnly

    取值范围:

    • true:以只读方式挂载。

    • false:以读写方式挂载。

    默认为false。

    subPath

    卷中的路径。

    数据卷配置

    volumes.nfs

    name

    自定义的卷名称。

    server

    NFS服务器地址(NAS挂载点)。

    path

    NFS数据卷路径。

    readOnly

    是否只读。

    volumes.emptyDir

    sizeLimit

    临时目录EmptyDir数据卷的大小。取值时需要带上单位,建议使用Gi或Mi。

    medium

    EmptyDirVolume的存储媒介。取值范围:

    • 未指定或为空:表示使用node文件系统作为存储媒介。

    • memory:表示使用内存作为存储媒介。

    默认为空。

    volumes.flexVolume

    driver

    用于FlexVolume的驱动程序名称。

    options

    FlexVolume对象选项列表。为KV形式,采用JSON传递。

    例如:通过FlexVolume挂载云盘时,Options的格式为{"volumeId":"d-2zehdahrwoa7srg****","performanceLevel": "PL2"}

    优雅中断容器配置

    terminationGracePeriodSeconds

    程序的缓冲时间,用于处理关闭之前的操作。单位为秒。

扩展的Annotation字段

通过Kubernetes YAML方式部署ECI类型伸缩组时,在配置YAML文件时仅支持扩展以下Annotation字段。

metadata中扩展的Annotation字段

参数

说明

示例

k8s.aliyun.com/ess-scaling-group-name

伸缩组名称。

ess-group-test

k8s.aliyun.com/ess-scaling-group-min-size

伸缩组内实例最小数。默认值:0。

0

k8s.aliyun.com/ess-scaling-group-max-size

伸缩组内实例最大数。默认值:max(replicas, 30)。

20

spec.template.spec中扩展的Annotation字段

更多Annotation信息,请参见ECI Pod Annotation

参数

示例值

说明

k8s.aliyun.com/eci-ntp-server

100.100.*.*

NTP Server。

k8s.aliyun.com/eci-use-specs

2-4Gi

指定ECI实例规格,支持指定多规格。更多信息,请参见多规格创建Pod

k8s.aliyun.com/eci-vswitch

vsw-bp1xpiowfm5vo8o3c****

指定交换机ID,支持指定多个交换机实现多可用区功能。

k8s.aliyun.com/eci-security-group

sg-bp1dktddjsg5nktv****

指定安全组ID。要求如下:

  • 支持指定一个或多个安全组,最多可以指定5个安全组。

  • 指定的安全组必须属于同一VPC。

  • 指定的安全组的类型必须相同。

k8s.aliyun.com/eci-sls-enable

"false"

配置为false表示关闭日志采集功能。通过SLS CRD方式采集日志时,如果某些Pod不需要采集日志,可配置该Annotation来关闭日志采集功能,避免系统自动创建Logtail而造成资源浪费。

k8s.aliyun.com/eci-spot-strategy

SpotAsPriceGo

抢占式实例的出价策略,可根据需要进行配置。

  • SpotWithPriceLimit:自定义设置抢占实例价格上限。此时必须设置k8s.aliyun.com/eci-spot-price-limit

  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。

k8s.aliyun.com/eci-spot-price-limit

"0.5"

抢占式实例的每小时价格上限,最多支持精确到小数点后三位。仅当

k8s.aliyun.com/eci-spot-strategy

设置为

SpotWithPriceLimit

时有效。

k8s.aliyun.com/eci-with-eip

"true"

配置为true表示自动创建并绑定EIP。

k8s.aliyun.com/eci-data-cache-bucket

default

指定DataCache的Bucket。使用DataCache创建Pod时必须配置。

k8s.aliyun.com/eci-data-cache-pl

PL1

基于DataCache创建的云盘的性能等级。默认使用ESSD云盘,性能等级默认为PL1。

k8s.aliyun.com/eci-data-cache-provisionedIops

"40000"

ESSD AutoPL云盘预配置的读写IOPS。取值范围:0~min{50000, 1000 * 容量-基准性能},基准性能=min{1800+50 * 容量, 50000}。更多信息,请参见ESSD AutoPL云盘

如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。

k8s.aliyun.com/eci-data-cache-burstingEnabled

"true"

ESSD AutoPL云盘是否开启Burst(性能突发)。更多信息,请参见ESSD AutoPL云盘

如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。

k8s.aliyun.com/eci-custom-tags

"env:test,name:alice"

绑定的标签(Tag)字符串,最多可以绑定3个标签。标签键和标签值之间用半角冒号(:)隔开,多个标签之间用半角逗号(,)隔开。

更多Annotation信息,请参见ECI Pod Annotation