ALIYUN::CS::ClusterNodePool类型用于为集群创建节点池。

语法

{
  "Type": "ALIYUN::CS::ClusterNodePool",
  "Properties": {
    "TeeConfig": Map,
    "ClusterId": String,
    "NodePoolInfo": Map,
    "KubernetesConfig": Map,
    "Count": Integer,
    "Management": Map,
    "AutoScaling": Map,
    "ScalingGroup": Map
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
TeeConfig Map 加密计算集群配置。 更多信息,请参见TeeConfig语法TeeConfig属性
ClusterId String 集群ID。 您可以通过调用DescribeClustersV1查询集群ID。
NodePoolInfo Map 节点池配置。 更多信息,请参见NodePoolInfo语法NodePoolInfo属性
KubernetesConfig Map 集群相关配置。 更多信息,请参见KubernetesConfig语法KubernetesConfig属性
Count Integer 节点池节点数量。
Management Map 托管节点池配置。 更多信息,请参见Management语法Management属性
AutoScaling Map 自动伸缩配置。 更多信息,请参见AutoScaling语法AutoScaling属性
ScalingGroup Map 节点池扩容组配置。

您可以通过调用DescribeClusterNodePools查询节点池扩容组配置。

更多信息,请参见ScalingGroup语法ScalingGroup属性

TeeConfig语法

"TeeConfig": {
  "TeeEnable": Boolean
}

TeeConfig属性

属性名称 类型 必须 允许更新 描述 约束
TeeEnable Boolean 是否开启加密计算集群。 取值:
  • true:开启加密计算集群。
  • false(默认值):不开启加密计算集群。

NodePoolInfo语法

"NodePoolInfo": {
  "ResourceGroupId": String,
  "Name": String
}

NodePoolInfo属性

属性名称 类型 必须 允许更新 描述 约束
ResourceGroupId String 节点池所属的资源组ID。
Name String 节点池名称。

KubernetesConfig语法

"KubernetesConfig": {
  "CpuPolicy": String,
  "Runtime": String,
  "CmsEnabled": Boolean,
  "UserData": String,
  "NodeNameMode": String,
  "RuntimeVersion": String,
  "Labels": List,
  "Unschedulable": Boolean,
  "Taints": List
}

KubernetesConfig属性

属性名称 类型 必须 允许更新 描述 约束
CpuPolicy String 节点CPU管理策略。 当集群版本在1.12.6及以上时,支持以下两种策略:
  • static:此策略允许向节点上具有特定资源特征的POD授予增强的CPU亲和力和独占性。
  • none(默认值):表示启用现有的默认CPU亲和性方案。
Runtime String 容器运行时的名称。
CmsEnabled Boolean 是否在ECS节点上安装云监控。

安装云监控后,可以在云监控控制台查看所创建ECS实例的监控信息。推荐开启。

取值:
  • true:在ECS节点上安装云监控。
  • false(默认值):不在ECS节点上安装云监控。
UserData String 节点自定义数据。
NodeNameMode String 自定义节点名。 节点名称由三部分组成:前缀+节点IP地址子串+后缀。
  • 前缀和后缀均可由半角句号(.)分隔的一个或多个部分组成,每个部分可以使用小写英文字母、数字和短划线(-),节点名称首尾必须为小写英文字母和数字。
  • IP地址段长度指截取节点IP地址末尾的位数,取值范围为5~12。
RuntimeVersion String 容器运行时版本。
Labels List 节点标签,为Kubernetes集群节点添加标签。

更多信息,请参见Labels语法Labels属性

Unschedulable Boolean 是否调度新添加的节点。 取值:
  • true:调度新节点。若想打开调度选项,可以在节点列表中开启。
  • false(默认值):节点扩容后设置为不可调度。
Taints List 污点配置。

更多信息,请参见Taints语法Taints属性

Labels语法

"Labels": [
  {
    "Value": String,
    "Key": String
  }
]

Labels属性

属性名称 类型 必须 允许更新 描述 约束
Value String 标签值。
Key String 标签键。

Taints语法

"Taints": [
  {
    "Value": String,
    "Effect": String,
    "Key": String
  }
]

Taints属性

属性名称 类型 必须 允许更新 描述 约束
Value String 污点值。
Effect String 调度策略。 取值:
  • NoSchedule(默认值):不能容忍,但仅影响调度过程,已被调度的Pod不受影响,仅对新增加的Pod生效。
  • NoExecute:不能容忍,当污点变动时,Pod对象会被驱逐。
  • PreferNoSchedule:柔性约束,节点现存Pod不受影响。
Key String 污点名称。

Management语法

"Management": {
  "UpgradeConfig": Map,
  "AutoRepair": Boolean,
  "Enable": Boolean
}

Management属性

属性名称 类型 必须 允许更新 描述 约束
UpgradeConfig Map 自动升级的配置。 该属性仅在Enable取值为true时生效。

更多信息,请参见UpgradeConfig语法UpgradeConfig属性

AutoRepair Boolean 是否启用自动修复。 此参数仅在Enable取值为true时生效。

取值:

  • true:启用自动修复。
  • false(默认值):禁用自动修复。
Enable Boolean 是否启用托管节点池。 取值:
  • true:启用托管节点池。
  • false(默认值):禁用托管节点池。

UpgradeConfig语法

"UpgradeConfig": {
  "AutoUpgrade": Boolean,
  "SurgePercentage": Integer,
  "Surge": Integer,
  "MaxUnavailable": Integer
}

UpgradeConfig属性

属性名称 类型 必须 允许更新 描述 约束
AutoUpgrade Boolean 是否启用自动升级。 取值:
  • true:启用自动升级。
  • false(默认值):禁用自动升级。
SurgePercentage Integer 额外节点比例。 SurgePercentage和Surge只能指定其中一个。
Surge Integer 额外节点数量。 SurgePercentage和Surge只能指定其中一个。
MaxUnavailable Integer 最大不可用节点数量。 取值范围:1~1000。默认值:1。

AutoScaling语法

"AutoScaling": {
  "EipBandwidth": Integer,
  "Type": String,
  "IsBondEip": Boolean,
  "MinInstances": Integer,
  "Enable": Boolean,
  "MaxInstances": Integer,
  "EipInternetChargeType": String
}

AutoScaling属性

属性名称 类型 必须 允许更新 描述 约束
EipBandwidth Integer EIP带宽峰值。
Type String 自动伸缩类型。 取值(按照自动伸缩实例类型):
  • cpu(默认值):普通实例型。
  • gpu:GPU实例型。
  • gpushare:GPU共享型。
  • spot:抢占式实例型。
IsBondEip Boolean 是否绑定EIP。 取值:
  • true:绑定EIP。
  • false(默认值):不绑定EIP。
MinInstances Integer 自动伸缩组最小实例数。
Enable Boolean 是否启用自动伸缩。 取值:
  • true:开启节点池自动伸缩功能。
  • false(默认值):不开启自动伸缩。当取值为false时,其他AutoScaling配置参数将不生效。
MaxInstances Integer 自动伸缩组最大实例数。
EipInternetChargeType String EIP计费类型。 取值:
  • PayByBandwidth(默认值):按固定带宽计费。
  • PayByTraffic:按使用流量计费。

ScalingGroup语法

"ScalingGroup": {
  "SpotInstanceRemedy": Boolean,
  "Platform": String,
  "DataDisks": List,
  "SystemDiskSize": Integer,
  "CompensateWithOnDemand": Boolean,
  "InstanceChargeType": String,
  "OnDemandPercentageAboveBaseCapacity": Integer,
  "AutoRenew": Boolean,
  "OnDemandBaseCapacity": Integer,
  "SystemDiskPerformanceLevel": String,
  "ImageId": String,
  "SpotPriceLimit": List,
  "InstanceTypes": List,
  "Tags": List,
  "SpotStrategy": String,
  "LoginPassword": String,
  "MultiAzPolicy": String,
  "AutoRenewPeriod": Integer,
  "ScalingPolicy": String,
  "KeyPair": String,
  "VSwitchIds": List,
  "SecurityGroupId": String,
  "SpotInstancePools": Integer,
  "Period": Integer,
  "InternetChargeType": String,
  "SystemDiskCategory": String,
  "InternetMaxBandwidthOut": Integer,
  "RdsInstances": List,
  "PeriodUnit": String,
  "ZoneIds": List   
}

ScalingGroup属性

属性名称 类型 必须 允许更新 描述 约束
SpotInstanceRemedy Boolean 是否使用抢占式实例。 取值:
  • true(默认值):使用抢占式实例。当收到抢占式实例将被回收的系统消息时,伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。
  • false:不使用抢占式实例。
更多信息,请参见使用抢占式实例
Platform String 操作系统。 取值:
  • CentOS
  • AliyunLinux(默认值)
  • Windows
  • WindowsCore
DataDisks List 节点池节点数据盘配置。 更多信息,请参见DataDisks语法DataDisks属性
SystemDiskSize Integer 节点的系统磁盘大小。 单位:GiB。取值范围:40~500。
CompensateWithOnDemand Boolean 当MultiAzPolicy取值为COST_OPTIMIZED时,如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足ECS实例数量要求。 取值:
  • true(默认值):允许自动尝试创建按量实例满足ECS实例数量要求。
  • false:不允许自动尝试创建按量实例满足ECS实例数量要求。
InstanceChargeType String 节点池节点付费类型。 取值:
  • PrePaid:预付费。
  • PostPaid(默认值):按量付费。
OnDemandPercentageAboveBaseCapacity Integer 伸缩组满足OnDemandBaseCapacity要求后,超出的实例中按量实例应占的比例。 取值范围:0~100。
AutoRenew Boolean 节点池节点是否开启自动续费。 当InstanceChargeType取值为PrePaid时生效。

取值:

  • true(默认):自动续费。
  • false:不自动续费。
OnDemandBaseCapacity Integer 伸缩组所需要按量实例个数的最小值。 取值范围:0~1000。当按量实例个数少于该值时,将优先创建按量实例。
SystemDiskPerformanceLevel String 设置云盘的性能等级。 取值:
  • PL1:单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。
更多信息,请参见ESSD云盘
ImageId String 自定义镜像ID。 默认使用系统提供的镜像。
SpotPriceLimit List 设置实例的每小时最高价格。 最大支持3位小数,SpotStrategy取值为SpotWithPriceLimit时生效。

更多信息,请参见SpotPriceLimit语法SpotPriceLimit属性

InstanceTypes List 抢占式实例规格。
Tags List 仅为ECS实例添加标签。 标签键不可以重复,最大长度为128个字符;标签键和标签值都不能以aliyunacs:开头,或包含https://http://

更多信息,请参见Tags语法Tags属性

SpotStrategy String 抢占式实例类型。 取值:
  • NoSpot:非抢占式实例。
  • SpotWithPriceLimit:设置抢占实例价格上限。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。
更多信息,请参见使用抢占式实例
LoginPassword String SSH登录密码。 KeyPair和LoginPassword仅能指定其中一个。

密码规则为8~30个字符,且至少包含英文字母、数字和特殊符号( ) ` ~ ! @ # $ % ^ & * - _ + = | { } [ ] : ; ' < > , . ? /中的三项。

MultiAzPolicy String 多可用区伸缩组ECS实例扩容和缩容策略。 取值:
  • PRIORITY(默认值):根据您定义的交换机进行扩容或者缩容。当优先级较高的交换机所在可用区无法创建ECS实例时,自动使用下一优先级的交换机创建ECS实例。
  • COST_OPTIMIZED:按vCPU单价从低到高进行尝试创建。当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建抢占式实例。您可以继续通过CompensateWithOnDemand指定当抢占式实例由于库存等原因无法创建时,是否自动尝试以按量付费的方式创建。
    说明 COST_OPTIMIZED仅在伸缩配置设置了多实例规格或者选用了抢占式实例的情况下生效。
  • BALANCE:在伸缩组指定的多可用区之间均匀分配ECS实例。如果由于库存不足等原因使可用区之间变得不平衡,您可以通过APIRebalanceInstances重新平衡多可用区伸缩组内ECS实例的分布。
AutoRenewPeriod Integer 节点池节点自动续费周期。 当InstanceChargeType取值为PrePaid,且AutoRenew取值为true时,AutoRenewPeriod生效且为必选值。

当PeriodUnit取值为Month时,取值:

  • 1(默认值)
  • 2
  • 3
  • 6
  • 12
ScalingPolicy String 伸缩组模式。 取值:
  • release(默认值):标准模式,根据申请资源值的使用量,通过创建、释放ECS的方式进行伸缩。
  • recycle:极速模式,通过创建、停机、启动的方式进行伸缩,提高再次伸缩的速度(停机时计算资源不收费,只收取存储费用,本地盘机型除外)。
KeyPair String 免密登录密钥对名称。

KeyPair和LoginPassword仅能指定其中一个。

说明 如果创建托管节点池,则只支持KeyPair。
VSwitchIds List 交换机ID。
SecurityGroupId String 安全组ID。
SpotInstancePools Integer 指定可用实例规格的个数,伸缩组将按成本最低的多个规格均衡创建抢占式实例。 取值范围:1~10。
Period Integer 节点池节点自动续费周期,当选择预付费和自动续费时才生效,且为必选值。 当PeriodUnit取值为Month时,取值:
  • 1(默认值)
  • 2
  • 3
  • 6
  • 12
InternetChargeType String 公网计费类型。 取值:
  • PayByBandwidth(默认值):按固定带宽计费。
  • PayByTraffic:按使用流量计费。
SystemDiskCategory String 节点系统盘类型。 取值:
  • cloud_efficiency(默认值):高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
InternetMaxBandwidthOut Integer 公网出带宽最大值。

单位:Mbit/s。

取值范围:1 Mbit/s~100 Mbit/s。

RdsInstances List RDS实例ID。
PeriodUnit String 节点池节点付费周期。 当InstanceChargeType取值为PrePaid的时候需要指定周期。

取值:

  • Month:月。
  • Year:年。
ZoneIds List 可用区ID列表。

DataDisks语法

"DataDisks": [
  {
    "Category": String,
    "Encrypted": Boolean,
    "PerformanceLevel": String,
    "Size": Integer,
    "AutoSnapshotPolicyId": String
  }
]

DataDisks属性

属性名称 类型 必须 允许更新 描述 约束
Category String 数据盘类型。 取值:
  • cloud_efficiency(默认值):高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
Encrypted Boolean 是否对数据盘加密。 取值:
  • true:对数据盘加密。
  • false(默认值):不对数据盘加密。
PerformanceLevel String 设置云盘的性能等级。 取值:
  • PL1:单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。
更多信息,请参见ESSD云盘
Size Integer 数据盘大小。 取值范围:40~32768。

默认值:120。

单位:GiB。

AutoSnapshotPolicyId String 选择自动快照策略ID,云盘会按照快照策略自动备份。 默认值为空,表示不自动备份。

SpotPriceLimit语法

"SpotPriceLimit": [
  {
    "PriceLimit": Number,
    "InstanceType": String
  }
]

SpotPriceLimit属性

属性名称 类型 必须 允许更新 描述 约束
PriceLimit Number 可抢占实例的价格限制。
InstanceType String 可抢占实例的实例类型。

Tags语法

"Tags": [
  {
    "Value": String,
    "Key": String
  }
]

Tags属性

属性名称 类型 必须 允许更新 描述 约束
Value String 标签值。
Key String 标签键。

返回值

Fn::GetAtt

NodePoolId:集群节点池ID。

示例

  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "TeeConfig": {
          "Type": "Json",
          "Description": "The configurations of confidential computing.",
          "Default": "{\n  \"TeeEnable\": true\n}"
        },
        "ClusterId": {
          "Type": "String",
          "Description": "Cluster ID.",
          "Default": "c64ca201b0a4b49agfd****"
        },
        "NodePoolInfo": {
          "Type": "Json",
          "Description": "The configurations of the node pool.",
          "Default": "{\n  \"Name\": \"test\"\n}"
        },
        "KubernetesConfig": {
          "Type": "Json",
          "Description": "The configurations of the ACK cluster.",
          "Default": "{\n  \"CpuPolicy\": \"static\",\n  \"Runtime\": \"containerd\",\n  \"CmsEnabled\": true,\n  \"UserData\": \"echo 'hello'\",\n  \"NodeNameMode\": \"customized,aliyun.com,5,test\",\n  \"RuntimeVersion\": \"1.4.8\",\n  \"Unschedulable\": false\n}"
        },
        "Count": {
          "Type": "Number",
          "Description": "The number of nodes in the node pool.",
          "Default": 1
        },
        "Management": {
          "Type": "Json",
          "Description": "The configurations of the managed node pool.",
          "Default": "{\n  \"UpgradeConfig\": {\n    \"AutoUpgrade\": true,\n    \"Surge\": 1,\n    \"MaxUnavailable\": 1\n  },\n  \"AutoRepair\": true,\n  \"Enable\": true\n}"
        },
        "ScalingGroup": {
          "Type": "Json",
          "Description": "The configurations of the scaling group used by the node pool.",
          "Default": "{\n  \"SpotInstanceRemedy\": true,\n  \"Platform\": \"AliyunLinux\",\n  \"SystemDiskSize\": 120,\n  \"InstanceChargeType\": \"PostPaid\",\n  \"SystemDiskPerformanceLevel\": \"PL1\",\n  \"ImageId\": \"aliyun_2_1903_x64_20G_alibase_20210726.vhd\",\n  \"InstanceTypes\": [\n    \"ecs.ebmhfc6.20xlarge\"\n  ],\n  \"LoginPassword\": \"test****\",\n  \"MultiAzPolicy\": \"BALANCE\",\n  \"VSwitchIds\": [\n    \"vsw-*****\"\n  ],\n  \"SystemDiskCategory\": \"cloud_essd\",\n  \"InternetMaxBandwidthOut\": 0\n}"
        }
      },
      "Resources": {
        "ClusterNodePool": {
          "Type": "ALIYUN::CS::ClusterNodePool",
          "Properties": {
            "TeeConfig": {
              "Ref": "TeeConfig"
            },
            "ClusterId": {
              "Ref": "ClusterId"
            },
            "NodePoolInfo": {
              "Ref": "NodePoolInfo"
            },
            "KubernetesConfig": {
              "Ref": "KubernetesConfig"
            },
            "Count": {
              "Ref": "Count"
            },
            "Management": {
              "Ref": "Management"
            },
            "ScalingGroup": {
              "Ref": "ScalingGroup"
            }
          }
        }
      },
      "Outputs": {
        "NodePoolId": {
          "Description": "Cluster node pool ID.",
          "Value": {
            "Fn::GetAtt": [
              "ClusterNodePool",
              "NodePoolId"
            ]
          }
        }
      }
    }
  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      TeeConfig:
        Type: Json
        Description: The configurations of confidential computing.
        Default: |-
          {
            "TeeEnable": true
          }
      ClusterId:
        Type: String
        Description: Cluster ID.
        Default: c64ca201b0a4b49agfd****
      NodePoolInfo:
        Type: Json
        Description: The configurations of the node pool.
        Default: |-
          {
            "Name": "test"
          }
      KubernetesConfig:
        Type: Json
        Description: The configurations of the ACK cluster.
        Default: |-
          {
            "CpuPolicy": "static",
            "Runtime": "containerd",
            "CmsEnabled": true,
            "UserData": "echo 'hello'",
            "NodeNameMode": "customized,aliyun.com,5,test",
            "RuntimeVersion": "1.4.8",
            "Unschedulable": false
          }
      Count:
        Type: Number
        Description: The number of nodes in the node pool.
        Default: 1
      Management:
        Type: Json
        Description: The configurations of the managed node pool.
        Default: |-
          {
            "UpgradeConfig": {
              "AutoUpgrade": true,
              "Surge": 1,
              "MaxUnavailable": 1
            },
            "AutoRepair": true,
            "Enable": true
          }
      ScalingGroup:
        Type: Json
        Description: The configurations of the scaling group used by the node pool.
        Default: |-
          {
            "SpotInstanceRemedy": true,
            "Platform": "AliyunLinux",
            "SystemDiskSize": 120,
            "InstanceChargeType": "PostPaid",
            "SystemDiskPerformanceLevel": "PL1",
            "ImageId": "aliyun_2_1903_x64_20G_alibase_20210726.vhd",
            "InstanceTypes": [
              "ecs.ebmhfc6.20xlarge"
            ],
            "LoginPassword": "test****",
            "MultiAzPolicy": "BALANCE",
            "VSwitchIds": [
              "vsw-*****"
            ],
            "SystemDiskCategory": "cloud_essd",
            "InternetMaxBandwidthOut": 0
          }
    Resources:
      ClusterNodePool:
        Type: ALIYUN::CS::ClusterNodePool
        Properties:
          TeeConfig:
            Ref: TeeConfig
          ClusterId:
            Ref: ClusterId
          NodePoolInfo:
            Ref: NodePoolInfo
          KubernetesConfig:
            Ref: KubernetesConfig
          Count:
            Ref: Count
          Management:
            Ref: Management
          ScalingGroup:
            Ref: ScalingGroup
    Outputs:
      NodePoolId:
        Description: Cluster node pool ID.
        Value:
          Fn::GetAtt:
            - ClusterNodePool
            - NodePoolId