ALIYUN::CS::KubernetesCluster类型用于创建Kubernetes专有版集群。

语法

{
  "Type": "ALIYUN::CS::KubernetesCluster",
  "Properties": {
    "MasterAutoRenew": Boolean,
    "CloudMonitorFlags": Boolean,
    "ProxyMode": String,
    "MasterInstanceTypes": List,
    "WorkerInstanceChargeType": String,
    "SnatEntry": Boolean,
    "WorkerPeriod": Number,
    "WorkerPeriodUnit": String,
    "WorkerSystemDiskCategory": String,
    "WorkerVSwitchIds": List,
    "MasterInstanceChargeType": String,
    "VpcId": String,
    "Tags": List,
    "MasterAutoRenewPeriod": Number,
    "CpuPolicy": String,
    "WorkerInstanceTypes": List,
    "WorkerDataDisks": List,
    "LoginPassword": String,
    "ContainerCidr": String,
    "NumOfNodes": Number,
    "Name": String,
    "WorkerSystemDiskSize": Number,
    "NodePortRange": String,
    "SshFlags": Boolean,
    "Taint": List,
    "MasterDataDisk": Boolean,
    "MasterSystemDiskCategory": String,
    "WorkerAutoRenewPeriod": Number,
    "WorkerDataDisk": Boolean,
    "WorkerAutoRenew": Boolean,
    "Addons": List,
    "DisableRollback": Boolean,
    "ServiceCidr": String,
    "KubernetesVersion": String,
    "MasterPeriod": Number,
    "SecurityGroupId": String,
    "KeyPair": String,
    "MasterVSwitchIds": List,
    "EndpointPublicAccess": Boolean,
    "MasterSystemDiskSize": Number,
    "MasterDataDisks": List,
    "MasterCount": Number,
    "TimeoutMins": Number,
    "MasterPeriodUnit": String,
    "PodVswitchIds": List,
    "Runtime": Map,
    "ResourceGroupId": String
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
MasterAutoRenew Boolean Master节点是否自动续费。 当MasterInstanceChargeType取值为PrePaid时,该参数生效。
取值:
  • true(默认值):自动续费。
  • false:不自动续费。
Runtime Map 容器运行时。 Runtime包括以下2个信息:
  • name:容器运行时名称。
  • version:容器运行时版本。

示例:

{"name": "docker", "version": "19.03.5"}
关于容器运行时的选择,请参见如何选择Docker运行时、Containerd运行时、或者安全沙箱运行时?

更多信息,请参见Runtime属性

CloudMonitorFlags Boolean 是否安装云监控插件。 取值:
  • true:安装云监控插件。
  • false(默认值):不安装云监控插件。
ProxyMode String kube-proxy代理模式。 取值:
  • iptables(默认值)
  • ipvs
MasterInstanceTypes List Master节点ECS实例规格。 必须填写3个ECS实例规格,ECS实例规格可以重复。

更多信息,请参见实例规格族

WorkerInstanceChargeType String Worker节点付费类型。 取值:
  • PrePaid:预付费(包年包月)。
  • PostPaid(默认值):按量付费。
SnatEntry Boolean 是否为网络配置SNAT。 取值:
  • 当已有专有网络可以访问公网环境时:false。
  • 当已有专有网络不能访问公网环境时:
    • true:配置SNAT,此时可以访问公网环境。
    • false:不配置SNAT,此时不能访问公网环境。
WorkerPeriod Number 包年包月时长。 当WorkerInstanceChargeType取值为PrePaid时该参数生效且为必选参数。
取值:
  • 当WorkerPeriodUnit取值为Week时:1、2、3、4。
  • 当WorkerPeriodUnit取值为Month时:1、2、3、4、5、6、7、8、9、12、24、36、48、60。

默认值:1。

WorkerPeriodUnit String 包年包月周期类型。 当WorkerInstanceChargeType取值为PrePaid时,需要指定周期类型。

取值:

  • Week:周。
  • Month(默认值):月。
WorkerSystemDiskCategory String Worker节点系统盘类型。 取值:
  • cloud_efficiency(默认值):高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
WorkerVSwitchIds List Worker节点的交换机ID。 最多支持设置5个VSwitchId。
MasterInstanceChargeType String Master节点付费类型。 取值:
  • PrePaid:包年包月。
  • PostPaid(默认值):按量付费。
VpcId String 专有网络ID。 如果不设置,系统会自动创建专有网络,系统创建的专有网络网段为192.168.0.0/16。

VpcId和MasterVSwitchIds只能同时为空或者同时指定。

Tags List 集群标签。 最多可以设置20组标签。

更多信息,请参见Tags属性

MasterAutoRenewPeriod Number Master节点自动续费周期。 当选择预付费和自动续费时该参数生效,且为必选值。取值:
  • 当MasterPeriodUnit取值为Week时:1、2、3。
  • 当MasterPeriodUnit取值为Month时:1、2、3、6、12。

默认值:1。

PodVswitchIds List Pod交换机列表。 您需要为每一个节点交换机指定至少一个相同可用区的Pod交换机,该Pod交换机不能跟节点交换机重复。

建议您选择网段掩码不大于19的交换机。

说明 当集群列表(Addons)取值为网络组件,且采用Terway网络类型时,必须为集群指定PodVswitchIds。
CpuPolicy String CPU策略。 当集群版本为1.12.6及以上版本时,取值:
  • static
  • none(默认值)
WorkerInstanceTypes List Worker节点ECS实例规格。 更多信息,请参见实例规格族
WorkerDataDisks List Worker数据盘类型、大小等配置。 只有在挂载Worker节点数据盘时有效。

更多信息,请参见WorkerDataDisks属性

LoginPassword String SSH登录密码。 长度为8~30个字符,必须同时包含英文字母、数字和特殊字符,特殊字符支持( )'~!@#$%^&*-+=|{ }[ ]:;< >,.?/-

该参数和KeyPair只能指定其中一个。

ContainerCidr String Pod网络地址段。 当创建Flannel网络类型的集群时,ContainerCidr为必填。ContainerCidr必须是有效的私有网段,即以下网段及其子网:
  • 10.0.0.0/8
  • 172.16-31.0.0/12-16
  • 192.168.0.0/16
不能与专有网络及专有网络内已有Kubernetes集群使用的网段重复,且创建成功后不能修改。

关于集群网络规划,请参见Kubernetes集群网络规划

NumOfNodes Number Worker节点数。 取值范围:0~300。

默认值:3。

Name String 集群名称。 长度为1~63个字符。可包含写英文字母、汉字、数字和短划线(-)。
WorkerSystemDiskSize Number Worker节点系统盘大小。 默认值:120。

单位:GiB。

NodePortRange String 节点服务端口。 取值范围:30,000~65,535中的两个值,以短划线(-)分隔。

默认值:30,000-65,535。

SshFlags Boolean 是否开放公网SSH登录。 取值:
  • true:开放。
  • false(默认值):不开放。
Taint List 给节点做污点标记,通常用于Pods的调度策略。 若Pods上有相对应的容忍(tolerance)标记,则可以将容忍节点上的污点调度到该节点。
MasterDataDisk Boolean Master节点是否挂载数据盘。 取值:
  • true:Master节点挂载数据盘。
  • false(默认值):Master节点不挂载数据盘。
MasterSystemDiskCategory String Master节点系统盘类型。 取值:
  • cloud_efficiency:高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。
WorkerAutoRenewPeriod Number 自动续费周期。 当选择预付费和自动续费时该参数生效且为必选参数。取值:
  • 当WorkerPeriodUnit取值为Week时:1、2、3。
  • 当WorkerPeriodUnit取值为Month时:1、2、3、6、12。
WorkerDataDisk Boolean Worker节点是否挂载数据盘。 取值:
  • true:Worker节点挂载数据盘。
  • false(默认值):Worker节点不挂载数据盘。
WorkerAutoRenew Boolean 是否开启Worker节点自动续费。 取值:
  • true(默认值):开启。
  • false:关闭。
Addons List Kubernetes集群安装的组件列表。 取值:
  • 网络组件

    支持Flannel和Terway两种网络类型,创建集群时需二选一:

    • Flannel网络:[{"Name":"flannel","Config":""}]
    • Terway网络:[{"Name": "terway-eniip","Config": ""}]
  • 存储组件

    支持csi和flexvolume两种类型:

    • csi:[{"Name":"csi-plugin","Config": ""},{"Name": "csi-provisioner","Config": ""}]
    • flexvolume:[{"Name": "flexvolume","Config": ""}]
  • 日志组件(可选)
    说明 如果不开启日志服务,将无法使用集群审计功能。
    • 使用已有SLS Project:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"your_sls_project_name\"}"}]
    • 创建新的SLS Project:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\"}"}]
  • Ingress组件(可选)

    ACK专有版集群默认安装Ingress组件nginx-ingress-controller。

    • 安装Ingress并且开启公网:[{"Name":"nginx-ingress-controller","Config":"{\"IngressSlbNetworkType\":\"internet\"}"}]
    • 不安装Ingress:[{"Name": "nginx-ingress-controller","Config": "","Disabled": true}]
  • 事件中心(可选,默认开启)

    事件中心提供对Kubernetes事件的存储、查询、告警等能力。Kubernetes事件中心关联的Logstore在90天内免费。更多信息,请参见创建并使用K8s事件中心

    开启事件中心:[{"Name":"ack-node-problem-detector","Config":"{\"sls_project_name\":\"your_sls_project_name\"}"}]

更多信息,请参见Addons属性
DisableRollback Boolean 失败是否回滚。 取值:
  • true(默认值):失败不回滚。
  • false:失败回滚。
    说明 如果选择失败回滚,则会释放创建过程中所生产的资源,不推荐使用。
ServiceCidr String 服务网段。 不能和专有网络网段以及容器网段冲突。

当选择系统自动创建专有网络时,默认使用172.19.0.0/20网段。

KubernetesVersion String 集群版本,与Kubernetes社区基线版本保持一致。建议选择最新版本。 目前您可以创建两种最新版本的集群。关于ACK支持的Kubernetes版本,请参见Kubernetes版本发布概览
MasterPeriod Number 包年包月时长。 当MasterInstanceChargeType取值为PrePaid时该参数生效且为必选参数。
取值:
  • 当MasterPeriodUnit取值为Week时:1,2,3,4。
  • 当MasterPeriodUnit取值为Month时:1,2,3,4,5,6,7,8,9,12,24,36,48,60。
默认值:1。
SecurityGroupId String 集群ECS实例所属于的安全组ID。
KeyPair String 密钥对名称。 KeyPair和LoginPassword只能指定其中一个。
MasterVSwitchIds List Master节点交换机ID。 必须指定3个交换机ID,交换机ID可以重复。为确保集群的高可用性,推荐您选择3个交换机。
EndpointPublicAccess Boolean 是否开启公网APIServer。 取值:
  • true:开启公网APIServer。
  • false(默认值):仅创建私网APIServer。
MasterSystemDiskSize Number Master节点系统盘大小。 默认值:120。

单位:GiB。

MasterDataDisks List Master数据盘类型、大小等配置。 只有在挂载Master节点数据盘时有效。

更多信息,请参见MasterDataDisks属性

MasterCount Number Master实例个数。 取值:
  • 3(默认值)
  • 5
TimeoutMins Number 集群资源栈创建超时时间。 默认值:60。

单位:分钟。

MasterPeriodUnit String Master节点付费周期。 当MasterInstanceChargeType指定为PrePaid时,需要指定周期。
取值:
  • Week:周。
  • Month(默认值):月。
ResourceGroupId String 资源组ID。

Tags语法

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

Tags属性

属性名称 类型 必须 允许更新 描述 约束
Key String 标签键。 长度为1~64个字符,不能以aliyunacs:https://http://开头。
Value String 标签值。 长度为0~128个字符,不能以aliyunacs:https://http://开头。

MasterDataDisks语法

"MasterDataDisks": [
  {
    "Category": String,
    "Size": Number
  }
]

MasterDataDisks属性

属性名称 类型 必须 允许更新 描述 约束
Category String Master节点数据盘类型。 取值:
  • cloud:普通云盘。
  • cloud_ssd:SSD云盘。
  • cloud_efficiency(默认值):高效云盘。
  • cloud_essd:ESSD云盘。
Size Number Master节点数据盘大小。 取值范围:40~32,768。

单位:GiB。

WorkerDataDisks语法

"WorkerDataDisks": [
  {
    "Category": String,
    "Size": Number
  }
]

WorkerDataDisks属性

属性名称 类型 必须 允许更新 描述 约束
Category String Worker节点数据盘类型。 取值:
  • cloud:普通云盘。
  • cloud_ssd:SSD云盘。
  • cloud_efficiency(默认值):高效云盘。
  • cloud_essd:ESSD云盘。
Size Number 数据盘大小。 取值范围:40~32,768。

单位:GiB。

Addons语法

"Addons": [
  {
    "Disabled": Boolean,
    "Config": String,
    "Name": String
  }
]

Addons属性

属性名称 类型 必须 允许更新 描述 约束
Disabled Boolean 是否禁止默认安装。 取值:
  • true:禁止默认安装。
  • false:允许默认安装。
Config String 插件的配置。 取值为空时表示无需配置。
Name String 插件的名称。

Runtime语法

"Runtime": {
    "Name": String,
    "Version": String
  }

Runtime属性

属性名称 类型 必须 允许更新 描述 约束
Name String 容器运行时名称。 取值:
  • containerd
  • docker(默认值)
  • Sandboxed-Container.runv
Version String 容器运行时版本。 取值:
  • Name取值为containerd时:1.4.4。
  • Name取值为docker时:19.03.5。
  • Name取值为Sandboxed-Container.runv时:3.4.1。

返回值

Fn::GetAtt

  • ClusterId:集群ID。
  • TaskId:任务ID。系统自动分配,用户查询任务状态。
  • WorkerRamRoleName:Worker节点RAM角色名称。
  • ScalingGroupId:伸缩组ID。
  • DefaultUserKubeConfig:用户默认的Kubernetes配置,用于配置集群凭据。
  • Nodes:集群节点列表。
  • ScalingRuleId:伸缩规则ID。
  • PrivateUserKubConfig:用户专有的Kubernetes配置,用于配置集群凭据。
  • ScalingConfigurationId:伸缩配置ID。

示例

JSON示例

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test Create KubernetesCluster",
  "Parameters": {
    "Name": {
      "Type": "String",
      "Default": "mytest"
    },
    "MasterInstanceTypes": {
      "Type": "Json",
      "Default": [
        "ecs.g6e.large",
        "ecs.g6e.large", 
                "ecs.g6e.large"
      ]
    },
    "WorkerInstanceTypes": {
      "Type": "Json",
      "Default": [
        "ecs.g6e.large"
      ]
    },
    "SystemDiskCategory": {
      "Type": "String",
      "Description": "Category of system disk. Default is cloud_efficiency. support cloud|cloud_efficiency|cloud_ssd|cloud_essd|ephemeral_ssd.Old instances will not be changed.",
      "AllowedValues": [
        "cloud",
        "cloud_efficiency",
        "cloud_ssd",
        "cloud_essd",
        "ephemeral_ssd"
      ],
      "Default": "cloud_essd"
    },
    "LoginPassword": {
      "Type": "String"
            "Default": "Text1234"
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest",
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch1": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": "mytest",
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        },
        "CidrBlock": "192.168.1.0/24"
      }
    },
    "VSwitch2": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": "mytest",
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        },
        "CidrBlock": "192.168.2.0/24"
      }
    },
    "VSwitch3": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": "mytest",
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        },
        "CidrBlock": "192.168.0.0/24"
      }
    },
    "KubernetesCluster": {
      "Type": "ALIYUN::CS::KubernetesCluster",
      "Properties": {
        "MasterInstanceTypes": {
          "Ref": "MasterInstanceTypes"
        },
        "MasterSystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "WorkerSystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "WorkerVSwitchIds": [
          {
            "Ref": "VSwitch1"
          }
        ],
        "VpcId": {
          "Ref": "Vpc"
        },
        "WorkerInstanceTypes": {
          "Ref": "WorkerInstanceTypes"
        },
        "Name": {
          "Ref": "Name"
        },
        "MasterVSwitchIds": [
          {
            "Ref": "VSwitch1"
          },
          {
            "Ref": "VSwitch2"
          },
          {
            "Ref": "VSwitch3"
          }
        ],
        "LoginPassword": {
          "Ref": "LoginPassword"
        }
      }
    }
  },
  "Outputs": {
    "ClusterId": {
      "Value": {
        "Fn::GetAtt": [
          "KubernetesCluster",
          "ClusterId"
        ]
      }
    },
    "TaskId": {
      "Value": {
        "Fn::GetAtt": [
          "KubernetesCluster",
          "TaskId"
        ]
      }
    }
  }
}

更多示例,请参见:JSON示例YAML示例