全部產品
Search
文件中心

:ALIYUN::CS::ManagedKubernetesCluster

更新時間:Dec 06, 2024

ALIYUN::CS::ManagedKubernetesCluster類型用於建立Kubernetes託管版叢集。

文法

{
  "Type": "ALIYUN::CS::ManagedKubernetesCluster",
  "Properties": {
    "CloudMonitorFlags": Boolean,
    "ProxyMode": String,
    "SnatEntry": Boolean,
    "VpcId": String,
    "Tags": List,
    "LoginPassword": String,
    "ContainerCidr": String,
    "Name": String,
    "Taint": List,
    "KeyPair": String,
    "Addons": List,
    "ServiceCidr": String,
    "KubernetesVersion": String,
    "SecurityGroupId": String,
    "EndpointPublicAccess": Boolean,
    "ClusterSpec": String,
    "TimeoutMins": Number,
    "PodVswitchIds": List,
    "EncryptionProviderKey": String,
    "Runtime": Map,
    "SocEnabled": Boolean,
    "UserData": String,
    "OsType": String,
    "IsEnterpriseSecurityGroup": Boolean,
    "Platform": String,
    "LoadBalancerSpec": String,
    "FormatDisk": Boolean,
    "NodeCidrMask": String,
    "KeepInstanceName": Boolean,
    "DeletionProtection": Boolean,
    "ResourceGroupId": String,
    "NodePools": List,
    "NodeNameMode": String,
    "SecurityHardeningOs": Boolean,
    "DeleteOptions": List,
    "ControlPlaneLogComponents": List,
    "ControlPlaneLogTtl": Number,
    "ControlPlaneLogProject": String
  }
}

屬性

屬性名稱

類型

必須

允許更新

描述

約束

Name

String

叢集名稱。

長度為1~63個字元。可包含英文字母、漢字、數字和短劃線(-)。

VpcId

String

專用網路ID。

如果不設定,系統會自動建立專用網路,系統建立的專用網路網段為192.168.0.0/16。

VpcIdVSwitchIds只能同時為空白或者同時都設定對應的值。

Addons

List

Kubernetes叢集的Addon外掛程式的組合。

取值:

  • 網路組件

    支援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": ""}]

  • 日誌組件(可選)

    說明

    如果不開啟Log Service,將無法使用叢集審計功能。

    • 使用已有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屬性

SecurityHardeningOs

Boolean

阿里雲作業系統安全強化。

取值:

  • true:啟用安全強化作業系統。

  • false:關閉安全強化作業系統。

預設值:false。

CloudMonitorFlags

Boolean

是否安裝CloudMonitor外掛程式。

取值:

  • true:安裝CloudMonitor外掛程式。

  • false(預設值):不安裝CloudMonitor外掛程式。

ClusterSpec

String

託管版叢集類型。

取值:

  • ack.pro.small:專業託管叢集,即ACK Pro版叢集。

  • ack.standard(預設值):標準託管叢集。

ContainerCidr

String

容器網段。

不能和專用網路網段衝突。當選擇系統自動建立專用網路時,預設使用172.16.0.0/16網段。

DeletionProtection

Boolean

是否啟用刪除保護功能。

啟用刪除保護後,叢集不能被直接刪除。取值:

  • true:啟用。

  • false(預設值):禁用。

EncryptionProviderKey

String

由Key Management Service管理的密鑰ID。

該密鑰用於加密資料磁碟。您只能在專業託管的Kubernetes叢集中使用KMS。

EndpointPublicAccess

Boolean

是否開啟公網APIServer。

取值:

  • true:開啟。

  • false(預設值):關閉。此時僅建立私網的APIServer。

FormatDisk

Boolean

是否將資料磁碟掛載到已建立的節點上,在已有的ECS執行個體中建立。

取值:

  • true:容器和鏡像的資料存放在資料磁碟上。磁碟上的未經處理資料將被覆蓋。掛載磁碟前請先備份資料。

  • false(預設值):不將容器和鏡像的資料存放區在資料磁碟上。

IsEnterpriseSecurityGroup

Boolean

是否建立進階安全性群組。

當SecurityGroupId為空白時,該參數生效。 取值:

  • true:建立。安裝了Terway的叢集,必須建立進階安全性群組。

  • false(預設值):不建立。

KeepInstanceName

Boolean

指定是否保留叢集中使用的現有ECS執行個體的名稱。

取值:

  • true(預設值):保留。

  • false:不保留。新名稱由系統分配。

KeyPair

String

金鑰組名稱。

KeyPair和LoginPassword只能指定其中一個參數。

KubernetesVersion

String

叢集版本,與Kubernetes社區基準版本保持一致。建議選擇最新版本。

目前您可以建立兩種最新版本的叢集。關於ACK支援的Kubernetes版本,請參見【已下線】Kubernetes版本發布概覽

LoadBalancerSpec

String

Server Load Balancer執行個體規格。

取值:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

LoginPassword

String

SSH登入密碼。

長度為8~30個字元,必須同時包含英文字母、數字和特殊字元三項,特殊字元支援( )'~!@#$%^&*-+=|{ }[ ]:;< >,.?/_

說明

LoginPassword和KeyPair只能指定其中一個參數。

NodeCidrMask

String

可分配給節點的最大IP地址數量。

數量由指定的pod CIDR決定。該參數僅在叢集使用Flannel外掛程式時生效。

預設值:25。

NodeNameMode

String

自訂節點名。

節點名稱由三部分組成:首碼+節點IP地址子串+尾碼。

  • 首碼和尾碼均可由半形句號(.)分隔的一個或多個部分組成,每個部分可以使用小寫英文字母、數字和短劃線(-),節點名稱首尾必須為小寫英文字母和數字。

  • IP位址區段長度指截取節點IP地址末尾的位元,取值範圍為5~12。

例如,節點IP地址為:192.168.XX.XX,指定首碼為aliyun.com,IP位址區段長度為5,尾碼為test,則節點名稱為aliyun.com0****test

NodePools

List

節點池資訊。

更多資訊,請參見NodePools屬性

OsType

String

作業系統類型。

取值:

  • Windows

  • Linux(預設值)

Platform

String

作業系統發布版本。

取值:

  • CentOS(預設值)

  • AliyunLinux

  • QbootAliyunLinux

  • Qboot

  • Windows

  • WindowsCore

PodVswitchIds

List

Pod交換器列表。

您需要為每一個節點交換器指定至少一個相同可用性區域的Pod交換器,該Pod交換器不能跟節點交換器重複。

建議您選擇網段掩碼不大於19的交換器。

說明

當叢集列表(Addons)取值為網路組件,且採用Terway網路類型時,必須為叢集指定PodVswitchIds。

ProxyMode

String

kube-proxy代理模式。

取值:

  • iptables(預設值)

  • ipvs

ResourceGroupId

String

叢集所屬資源群組ID。

Runtime

Map

容器運行時。

Runtime包括以下2個資訊:

  • name:容器運行時名稱。

  • version:容器運行時版本。

樣本:

{"name": "docker", "version": "19.03.5"}

關於容器運行時的選擇,請參見如何選擇Docker運行時、containerd運行時、或者安全沙箱運行時?

更多資訊,請參見DeleteOptions屬性

SecurityGroupId

String

叢集ECS執行個體所屬安全性群組ID。

ServiceCidr

String

服務網段。

不能和專用網路網段以及容器網段衝突。當選擇系統自動建立專用網路時,預設使用172.19.0.0/20網段。

SnatEntry

Boolean

是否為網路設定SNAT。

取值:

  • 當已有專用網路能訪問公網環境時:false。此時無需為網路設定SNAT。

  • 當已有專用網路不能訪問公網環境時:

    • true:配置SNAT,此時可以訪問公網環境。

    • false:不配置SNAT,此時不能訪問公網環境。

SocEnabled

Boolean

是否啟用基於分級保護的加固。

取值:

  • true:啟用。

  • false(預設值):禁用。

Tags

List

叢集標籤。

最多可以設定20組標籤。

更多資訊,請參見Tags屬性

Taint

List

給節點做汙點標記,通常用於Pods的調度策略。

若Pods上有相對應的容忍(tolerance)標記,則可以將容忍節點上的汙點調度到該節點。

TimeoutMins

Number

叢集建立逾時時間。

預設值:60。

單位:分鐘。

UserData

String

建立ECS執行個體時傳遞的使用者資料。

內容需要限制在16 KB以內。無需使用Base64轉碼,特殊字元需要使用轉義符。

DeleteOptions

List

叢集關聯資源的刪除選項。

更多資訊,請參見DeleteOptions屬性

ControlPlaneLogTtl

Number

控制平面組件日誌儲存天數。

ControlPlaneLogComponents

List

組件名稱列表。

指定那些控制平面的組件日誌需要被收集。

預設採集 apiserver、kcm、scheduler 組件的日誌。

ControlPlaneLogProject

String

控制平面組件Log Service Project。

可以使用已有 Project 用於日誌儲存,也可以使用系統自動建立 Project 使用者日誌儲存。如果選擇自動建立Log Service Project 將會自動建立一個名稱為k8s-log-{ClusterID}的Log Service Project。

NodePools文法

"NodePools": [
  {
    "ScalingGroup": Map,
    "KubernetesConfig": Map,
    "NodePoolInfo": Map
  }
]

NodePools屬性

屬性名稱

類型

必須

允許更新

描述

約束

ScalingGroup

Map

節點池擴容組配置。

更多資訊,請參見ScalingGroup屬性

KubernetesConfig

Map

叢集相關配置。

更多資訊,請參見KubernetesConfig屬性

NodePoolInfo

Map

節點池配置。

更多資訊,請參見NodePoolInfo屬性

ScalingGroup文法

"ScalingGroup": {
  "RdsInstances": List,
  "IsEnterpriseSecurityGroup": Boolean,
  "VSwitchIds": List,
  "InternetMaxBandwidthOut": Integer,
  "DataDisks": List,
  "Period": Integer,
  "InternetChargeType": String,
  "KeyPair": String,
  "SystemDiskPerformanceLevel": String,
  "ImageId": String,
  "InstanceTypes": List,
  "SystemDiskCategory": String,
  "PeriodUnit": String,
  "LoginPassword": String,
  "InstanceChargeType": String,
  "SystemDiskSize": Integer,
  "Tags": List,
  "ZoneIds": List,
  "DesiredSize": Integer
}

ScalingGroup屬性

屬性名稱

類型

必須

允許更新

描述

約束

InstanceTypes

List

執行個體規格。

SystemDiskSize

Integer

節點系統硬碟大小。

單位:GiB。

取值範圍:40~500。

VSwitchIds

List

虛擬交換器ID列表。

DesiredSize

Integer

節點池期望節點數。

DataDisks

List

節點池節點資料盤配置。

更多資訊,請參見DataDisks屬性

ImageId

String

自訂鏡像ID。

預設使用系統提供的鏡像。

InstanceChargeType

String

節點池節點付費類型。

取值:

  • PrePaid:預付費。

  • PostPaid(預設值):隨用隨付。

InternetChargeType

String

公網IP收費類型。

取值:

  • PayByBandwidth:按固定頻寬計費。

  • PayByTraffic:按使用流量計費。

InternetMaxBandwidthOut

Integer

節點公網IP出頻寬最大值。

單位:Mbps。

取值範圍:1~100。

IsEnterpriseSecurityGroup

Boolean

自動建立企業級安全性群組。

取值:

  • true:建立並使用企業級安全性群組。

  • false:不使用企業級安全性群組。

KeyPair

String

免密登入金鑰組名稱。

KeyPair和LoginPassword屬性二選一。

LoginPassword

String

SSH登入密碼。

KeyPair和LoginPassword只能選擇其中之一。

密碼規則為8~30個字元,且至少同時包含大小寫字母、數字和特殊符號。

Period

Integer

節點池節點訂用帳戶時間長度。

當InstanceChargeType取值為PrePaid時,本屬性才生效且為必選值。

當period_unit取值為Month時,period取值範圍:{ 1, 2, 3,6,12}。

預設值:1。

PeriodUnit

String

節點池節點付費周期。

當InstanceChargeType指定為PrePaid時需要指定周期。

Month:以月為計時單位。

RdsInstances

List

RDS執行個體ID。

SystemDiskCategory

String

節點系統硬碟類型。

取值:

  • cloud_efficiency(預設值):高效雲端硬碟。

  • cloud_ssd:SSD雲端硬碟。

  • cloud_essd:ESSD雲端硬碟。

SystemDiskPerformanceLevel

String

節點系統硬碟磁碟效能。

只對ESSD磁碟生效。

Tags

List

僅為ECS執行個體添加標籤。

更多資訊,請參見Tags屬性

ZoneIds

List

可用性區域列表。

DataDisks文法

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

DataDisks屬性

屬性名稱

類型

必須

允許更新

描述

約束

AutoSnapshotPolicyId

String

選擇自動快照策略ID。

雲端硬碟會按照快照策略自動備份。

Category

String

資料盤類型。

取值:

  • cloud:普通雲端硬碟。

  • cloud_efficiency(預設值):高效雲端硬碟。

  • cloud_ssd:SSD雲端硬碟。

  • cloud_essd:ESSD雲端硬碟。

Encrypted

Boolean

是否對資料盤加密。

取值:

  • true:對資料盤加密。

  • false(預設值):不對資料盤加密。

PerformanceLevel

String

節點資料盤磁碟效能等級。

僅對ESSD磁碟生效,磁碟效能等級和磁碟大小有關。

更多資訊,請參見ESSD雲端硬碟

Size

Integer

資料盤大小。

單位為GiB。

取值範圍:40~32768。

預設值:120。

KubernetesConfig文法

"KubernetesConfig": {
  "Runtime": String,
  "RuntimeVersion": String,
  "CpuPolicy": String,
  "Labels": List,
  "NodeNameMode": String,
  "Taints": List
}

KubernetesConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

Runtime

String

容器運行時。

RuntimeVersion

String

容器運行時版本。

CpuPolicy

String

節點CPU管理原則。

當叢集版本在1.12.6及以上時支援以下兩種策略:

  • static:允許為節點上具有某些資源特徵Pod增強其CPU親和性和獨佔性。

  • none(預設值):表示啟用現有的預設CPU親和性方案。

Labels

List

節點標籤。

為Kubernetes叢集節點添加標籤。

更多資訊,請參見Labels屬性。

NodeNameMode

String

自訂節點名。

節點名稱由三部分組成:首碼+節點IP地址子串+尾碼。

  • 首碼和尾碼均可由半形句號(.)分隔的一個或多個部分組成,每個部分可以使用小寫英文字母、數字和短劃線(-),節點名稱首尾必須為小寫英文字母或數字。

  • IP位址區段長度指截取節點IP地址末尾的位元,取值範圍為5~12。

例如,節點IP地址為:192.168.XX.XX,指定首碼為aliyun.com,IP位址區段長度為5,尾碼為test,則節點名稱為aliyun.com0****test

Taints

List

汙點配置。

更多資訊,請參見Taints屬性

Labels文法

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

Labels屬性

屬性名稱

類型

必須

允許更新

描述

約束

Key

String

標籤鍵。

Value

String

標籤值。

Taints文法

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

Taints屬性

屬性名稱

類型

必須

允許更新

描述

約束

Key

String

汙點名稱。

Value

String

汙點值。

Effect

String

調度策略。

  • NoSchedule(預設值):不能容忍,但僅影響調度過程,已被調度的Pod不受影響,僅對新增加的Pod生效。

  • NoExecute:不能容忍,當汙點變動時,Pod對象會被驅逐。

  • PreferNoSchedule:柔性約束,節點現存Pod不受影響。

NodePoolInfo文法

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

NodePoolInfo屬性

屬性名稱

類型

必須

允許更新

描述

約束

Name

String

節點池名稱。

Type

String

節點池類型

取值:

  • ess: ess節點池。

  • edge:edge節點池。

ResourceGroupId

String

節點池所屬資源群組。

Tags文法

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

Tags屬性

屬性名稱

類型

必須

允許更新

描述

約束

Key

String

標籤鍵。

長度為1~64個字元,不能以aliyunacs:https://http://開頭。

Value

String

標籤值。

長度為0~128個字元,不能以aliyunacs:https://http://開頭。

Addons文法

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

Addons屬性

屬性名稱

類型

必須

允許更新

描述

約束

Name

String

Addon外掛程式名稱。

Config

String

Addon外掛程式配置。

Disabled

Boolean

是否禁用預設安裝。

取值:

  • true(預設值):禁用預設安裝。

  • false:啟用預設安裝。

Version

String

Addon外掛程式版本。

預設取最新版本。

DeleteOptions文法

"DeleteOptions": [
    {
      "DeleteMode": String,
      "ResourceType": String
    }
  ]

DeleteOptions屬性

屬性名稱

類型

必須

允許更新

描述

約束

DeleteMode

String

該類型資源的刪除策略。

可取值:

  • delete:刪除該類資源

  • retain:保留該類資源

ResourceType

String

資源類型。

可取值:

  • SLB:通過 service 建立的 SLB 資源,預設刪除,可選擇保留

  • ALB:ALB Ingress Controller 建立的 ALB 資源,預設保留,可選擇刪除

  • SLS_Data:叢集日誌功能所使用的Log Service Project,預設保留,可選擇刪除

  • SLS_ControlPlane:託管版叢集控制平面日誌所使用的Log Service Project,預設保留,可選擇刪除

  • PrivateZone:ACK Serverless 叢集建立的 PrivateZone 資源,預設保留,可選擇刪除

Runtime文法

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

Runtime屬性

屬性名稱

類型

必須

允許更新

描述

約束

Name

String

容器運行時名稱。

ACK 支援以下三種容器運行時。

  • containerd:推薦使用,支援所有叢集版本。

  • Sandboxed-Container.runv:安全沙箱容器,提供更高的隔離性,支援 1.24 版本及以下叢集。

  • docker:支援 1.22 版本及以下叢集。

預設值:containerd

Version

String

容器運行時版本。

預設為最新版。

關於安全沙箱運行時的變更詳情,請參見安全沙箱運行時發布記錄

傳回值

Fn::GetAtt

  • ClusterId:叢集ID。

  • TaskId:任務ID。系統自動分配,使用者查詢任務狀態。

  • DefaultUserKubeConfig:使用者配置叢集憑據的預設Kubernetes配置。

  • ScalingRuleId:伸縮規則ID。

  • ScalingGroupId:伸縮組ID。

  • PrivateUserKubConfig:使用者配置叢集憑據的專有Kubernetes配置。

  • ScalingConfigurationId:伸縮配置ID。

  • Nodes:叢集節點列表。

  • APIServerSLBId:API伺服器負載平衡ID。

  • IngressSLBId:Ingress負載平衡ID。

樣本

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Description: Test Create ManagedKubernetesCluster
Parameters: {}
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName: mytest
      CidrBlock: 192.168.0.0/16
  VSwitch:
    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
  ManagedKubernetesCluster:
    Type: ALIYUN::CS::ManagedKubernetesCluster
    Properties:
      VSwitchIds:
        - Ref: VSwitch
      VpcId:
        Ref: Vpc
      ClusterSpec: ack.pro.small
      LoginPassword: Admin@123!
      Name: mytest
Outputs:
  ClusterId:
    Value:
      Fn::GetAtt:
        - ManagedKubernetesCluster
        - ClusterId
  TaskId:
    Value:
      Fn::GetAtt:
        - ManagedKubernetesCluster
        - TaskId         

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test Create ManagedKubernetesCluster",
  "Parameters": {
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest",
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "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"
      }
    },
    "ManagedKubernetesCluster": {
      "Type": "ALIYUN::CS::ManagedKubernetesCluster",
      "Properties": {
        "VSwitchIds": [
          {
            "Ref": "VSwitch"
          }
        ],
        "VpcId": {
          "Ref": "Vpc"
        },
        "ClusterSpec": "ack.pro.small",
        "LoginPassword": "Admin@123!",
        "Name": "mytest"
      }
    }
  },
  "Outputs": {
    "ClusterId": {
      "Value": {
        "Fn::GetAtt": [
          "ManagedKubernetesCluster",
          "ClusterId"
        ]
      }
    },
    "TaskId": {
      "Value": {
        "Fn::GetAtt": [
          "ManagedKubernetesCluster",
          "TaskId"
        ]
      }
    }
  }
}