更新时间:2023-12-13 GMT+08:00

APM.AutoScaler

模型说明

APM.AutoScaler用于控制应用的自动弹性伸缩。

模型属性

表1 模型定义属性说明

属性

是否必选

描述

name

自动弹性伸缩策略的名称

参数类型:string

取值说明:用户自定义

取值约束:长度限制:1-64,租户唯一,正则规范要求:{"regex":"^[a-zA-Z][0-9a-zA-Z-_]*$","min_length":1,"max_length":64}

maxInstances

自动伸缩策略所支持的最大实例数,达到这个数目后将不再扩容

参数类型:integer

取值说明:1-1000的整形数字,如:15

默认值:10

取值约束:1-1000的整形数字,此数字必须大于minInstance的值

使用建议:根据规格按需选择

appName

自动弹性伸缩策略作用的应用名称

参数类型:string

取值说明:模板中CCE.deployment对象的名称

默认值:""

使用建议:建议通过连线到CCE.deployment对象自动以get_reference方法获取或者手动输入

rules

自动弹性伸缩的规则,表明扩容或缩容的策略(当前仅支持根据性能指标扩缩容)

参数类型:APM.AutoscalerRule数组

取值说明:APM.AutoscalerRule类型数组

取值约束:满足APM.AutoscalerRule类型数组定义

使用建议:在“组成部分”中选择rules字段根据提示的字段进行扩充填写

clusterId

自动弹性伸缩策略作用的应用所在的集群ID

参数类型:HuaweiCloud.CCE.Cluster.Id

取值说明:模板中CCE.cluster对象的ID

取值约束:{u'max_length': 64}

使用建议:建议通过连线到CCE.deployment对象,根据该对象连接的CCE.cluster,以 get_attribute方法获取或手动输入

cooldownTime

弹性伸缩的冷却时间,即连续两次弹性伸缩的间隔时间

参数类型:integer

取值说明:0-86400的整形数字,单位秒,例如180

默认值:60

取值约束:0-86400的整形数字,即从完全没有冷却时间到最大冷却时间24小时

使用建议:根据规格按需选择

minInstances

自动伸缩策略所支持的最小实例数,达到这个数目后将不再缩容

参数类型:integer

取值说明:1-1000的整形数字,如:15

默认值:1

取值约束:1-1000的整形数字,此数字必须小于maxInstance的值

使用建议:根据规格按需选择

type

自动弹性伸缩策略的类型

参数类型:string

取值说明:当前支持应用类型进行自动弹性伸缩,即策略可以加载到无状态应用及CCE的deployment对象

默认值:app

取值约束:当前仅可填写“app”

使用建议:使用默认值

关联关系

表2 关联关系说明

关系说明

关联节点

关联关系

ServiceStage.StatelessApplication

被包含关系

CCE.Cluster

关联关系

CCE.Deployment

输出

属性

参数类型

描述

refID

string

弹性伸缩策略的实例ID

refName

string

弹性伸缩策略的实例名称

blueprint样例

tosca_definitions_version: huaweicloud_tosca_version_1_0
inputs:
  images:
    type: string
  instances:
    default: 1
    type: integer
node_templates:
  containercomponent-2:       # 定义部署应用所需的容器信息
    type: HuaweiCloud.ServiceStage.ContainerComponent
    properties:
      package:
        image:
          get_input: images
        imagePullPolicy: Always
        lifecycle:
          postStart:
            - '/bin/bash'
            - '-c'
            - touch aos
          preStop:
            - '/bin/bash'
            - '-c'
            - sleep 60
  statelessapplication-1:     # 定义无状态应用
    type: HuaweiCloud.ServiceStage.StatelessApplication
    properties:
      affinitySelector:
        affinities:
          antiself: false
      instances:
        get_input: instances
      type: container
    requirements:
      - package:
          node: containercomponent-2
          relationship: HuaweiCloud.Relationships.PackageConsistsOf
  my-scaling-policy:
    type: HuaweiCloud.APM.AutoScaler
    properties:
      name: my-scaling-policy
      maxInstances: 10
      minInstances: 3
      cooldownTime: 180
      rules:
        - name: scaling-out-rule
          conditions:
            - evaluationPeriods: 1
              metricUnit: Percent
              period: 60
              metricOperation: '>'
              metricThreshold: 70
              metricNamespace: PAAS.CONTAINER
              statistic: average
              metricName: cpuUsage
          actions:
            - type: scale_out_k8s
              parameters:
                scaleUnit: 1
        - name: scaling-in-rule
          conditions:
            - metricNamespace: PAAS.CONTAINER
              metricName: cpuUsage
              metricUnit: Percent
              metricOperation: <
              metricThreshold: 50
              statistic: average
              period: 60
              evaluationPeriods: 3
          actions:
            - type: scale_in_k8s
    requirements:
      - application:
          node: statelessapplication-1    # 设置对StatelessApplication元素的依赖