CreateCluster操作を呼び出して、Container Service for Kubernetes (ACK) マネージドクラスターを作成できます。 ACK管理クラスターを作成するときに、1つ以上のノードプールを作成できます。
デバッグ
リクエスト構文
POST /clusters HTTP/1.1
Content-Type:application/json
{
"name" : "String",
"region_id" : "String",
"cluster_type" : "String",
"cluster_spec" : "String",
"kubernetes_version" : "String",
"resource_group_id" : "String",
"vpcid" : "String",
"vswitch_ids" : [ "String" ],
"pod_vswitch_ids" : [ "String" ],
"container_cidr" : "String",
"service_cidr" : "String",
"security_group_id" : "String",
"is_enterprise_security_group" : Boolean,
"node_cidr_mask" : "String",
"snat_entry" : Boolean,
"endpoint_public_access" : Boolean,
"load_balancer_spec" : "String",
"timezone" : "String",
"proxy_mode" : "String",
"enable_rrsa" : Boolean,
"tags" : [ {
"key" : "String",
"value" : "String"
} ],
"cluster_domain" : "String",
"custom_san" : "String",
"service_account_issuer" : "String",
"api_audiences" : "String",
"encryption_provider_key" : "String",
"timeout_mins" : Long,
"disable_rollback" : Boolean,
"deletion_protection" : Boolean,
"addons" : [ {
"name" : "String",
"config" : "String",
"disabled" : Boolean
} ],
"controlplane_log_ttl" : "String",
"controlplane_log_project" : "String",
"controlplane_log_components" : [ "String" ],
"nodepools" : [ {
"auto_scaling" : {
"enable" : Boolean,
"max_instances" : Long,
"min_instances" : Long,
"type" : "String",
"is_bond_eip" : Boolean,
"eip_internet_charge_type" : "String",
"eip_bandwidth" : Long
},
"kubernetes_config" : {
"cms_enabled" : Boolean,
"cpu_policy" : "String",
"labels" : [ {
"key" : "String",
"value" : "String"
} ],
"runtime" : "String",
"runtime_version" : "String",
"taints" : [ {
"key" : "String",
"value" : "String",
"effect" : "String"
} ],
"user_data" : "String"
},
"nodepool_info" : {
"name" : "String",
"resource_group_id" : "String"
},
"scaling_group" : {
"auto_renew" : Boolean,
"auto_renew_period" : Long,
"data_disks" : [ {
"category" : "String",
"size" : Long,
"encrypted" : "String",
"auto_snapshot_policy_id" : "String"
} ],
"image_id" : "String",
"instance_charge_type" : "String",
"instance_types" : [ "String" ],
"key_pair" : "String",
"login_password" : "String",
"period" : Long,
"period_unit" : "String",
"platform" : "String",
"rds_instances" : [ "String" ],
"spot_strategy" : "String",
"spot_price_limit" : [ {
"instance_type" : "String",
"price_limit" : "String"
} ],
"scaling_policy" : "String",
"security_group_id" : "String",
"security_group_ids" : [ "String" ],
"system_disk_category" : "String",
"system_disk_size" : Long,
"tags" : [ {
"key" : "String",
"value" : "String"
} ],
"vswitch_ids" : [ "String" ],
"multi_az_policy" : "String",
"on_demand_base_capacity" : Long,
"on_demand_percentage_above_base_capacity" : Long,
"spot_instance_pools" : Long,
"spot_instance_remedy" : Boolean,
"compensate_with_on_demand" : Boolean,
"internet_charge_type" : "String",
"internet_max_bandwidth_out" : Long
},
"tee_config" : {
"tee_enable" : Boolean
},
"management" : {
"enable" : Boolean,
"auto_repair" : Boolean,
"upgrade_config" : {
"auto_upgrade" : Boolean,
"surge" : Long,
"surge_percentage" : Long,
"max_unavailable" : Long
}
},
"count" : Long
} ]
}
リクエストパラメーター
表 1. リクエストボディパラメータ
カテゴリ | パラメーター | 型 | 必須 / 任意 | 例 | 説明 |
基本設定 | name | String | 可 | cluster-デモ | クラスター名です。 名前は1 ~ 63文字で、数字、文字、ハイフン (-) 、およびアンダースコア (_) を使用できます。 アンダースコア (_) で始めることはできません。 |
region_id | String | 可 | cn-beijing | クラスターをデプロイするリージョンのID。 | |
cluster_type | String | 可 | ManagedKubernetes | クラスタータイプは
| |
cluster_spec | String | 任意 | ack.pro.small | ACK管理クラスターのタイプ。 有効な値:
デフォルト値: 詳細については、「ACK Proクラスターの概要」をご参照ください。 | |
kubernetes_version | String | 任意 | 1.28.9-aliyun.1 | クラスターの Kubernetes のバージョンです。 ACKでサポートされているKubernetesバージョンは、オープンソースKubernetesでサポートされているKubernetesバージョンと同じです。 最新のKubernetesバージョンを指定することを推奨します。 このパラメーターを指定しない場合、最新のKubernetesバージョンが使用されます。 ACKコンソールで、最新の2つのKubernetesバージョンのクラスターを作成できます。 以前のバージョンのKubernetesのクラスターを作成する場合は、APIを使用します。 ACKでサポートされているKubernetesバージョンの詳細については、「Kubernetesバージョンのサポート」をご参照ください。 | |
ランタイム | ランタイムの配列 | 不可 | {"name": "containerd", "version": "1.6.20"} | コンテナランタイムの名前です。 ACKでサポートされるランタイムの種類は次のとおりです。
デフォルト値: | |
resource_group_id | String | 任意 | rg-acfm3mkrure **** | クラスターが属するリソースグループのID。 このパラメーターを使用して、異なるクラスターを分離できます。 | |
charge_type | String | 任意 | PostPaid | APIサーバーが使用するClassic Load Balancer (CLB) インスタンスの課金方法。 デフォルト値: 有効な値:
重要
| |
ピリオド | Long | 不可 | 1 | このパラメーターは非推奨です。 サブスクリプション期間です。 サブスクリプション期間です。 このパラメーターは、 有効な値: 1、2、3、6、12、24、36、48、および60。 デフォルト値:1 重要
| |
period_unit | String | 任意 | 1 か月 | このパラメーターは非推奨です。 課金サイクルです。 このパラメーターは、 値を 重要
| |
auto_renew | Boolean | 不可 | true | このパラメーターは非推奨です。 クラスターの自動更新を有効にするかどうかを指定します。 このパラメーターは、
デフォルト値: 重要
| |
auto_renew_期間 | long | 不可 | 1 | このパラメーターは非推奨です。 クラスターの自動更新サイクル。 このパラメーターは、 デフォルト値:1 重要
| |
ネットワークパラメータ | vpcid | String | 可 | vpc-2zeik9h3ahvv2zz95 **** | クラスターをデプロイする仮想プライベートクラウド (VPC) のID。 |
vswitch_ids | 文字列の配列 | 可 | ["vsw-2ze48rkq464rsdts1 ****"] | vSwitchのID。 1〜5つのvSwitchを指定できます。 | |
pod_vswitch_ids | 文字列の配列 | 不可 | ["vsw-2ze97jwri7cei0mpw ****"] | ネットワークプラグインとしてTerwayを選択した場合、vSwitchをポッドに割り当てる必要があります。 各ポッドvSwitchは、ワーカーノードのvSwitchに対応します。 ポッドのvSwitchとワーカーノードのvSwitchは同じゾーンにある必要があります。 重要 ポッドvSwitchのCIDRブロックのサブネットマスクを19ビット以下に設定することを推奨しますが、サブネットマスクは25ビットを超えてはなりません。 それ以外の場合、クラスタネットワークには、ポッドに割り当てることができるIPアドレスの数が限られています。 その結果、クラスターは期待通りに機能しない可能性があります。 | |
container_cidr | String | 任意 | 172.20.0.0/16 | ポッドのCIDRブロック。 このCIDRブロックは、クラスターがデプロイされているVPCのCIDRブロックと重複することはできません。 VPCがシステムによって自動的に作成される場合、ポッドのデフォルトのCIDRブロックは172.16.0.0/16です。 重要
| |
service_cidr | String | 可 | 172.21.0.0/20 | サービスのCIDRブロック。 このCIDRブロックは、ポッドのCIDRブロックまたはクラスターがデプロイされているVPCのCIDRブロックと重複することはできません。 VPCがシステムによって自動的に作成される場合、サービスのデフォルトのCIDRブロックは172.19.0.0/20です。 | |
security_group_id | String | 任意 | sg-bp1bdue0qc1g7k **** | 既存のセキュリティグループのID。 このパラメーターと | |
is_enterprise_security_グループ | Boolean | 不可 | true | 高度なセキュリティグループを作成するかどうかを指定します。 このパラメーターは、 説明 基本セキュリティグループを使用するには、クラスター内のノード数とTerwayを使用するポッド数の合計が2,000を超えないようにします。 そのため、Terwayをネットワークプラグインとして使用するクラスターには、高度なセキュリティグループを指定することをお勧めします。
デフォルト値: | |
node_cidr_mask | String | 任意 | 25 | 各ノードに割り当てることができるIPアドレスの最大数。 この数は、指定されたポッドCIDRブロックによって決まります。 このパラメーターは、クラスターがFlannelプラグインを使用している場合にのみ有効です。 デフォルト値: | |
snat_entry | Boolean | 不可 | true | クラスターがデプロイされているVPCのSNATルールを設定するかどうかを指定します。
アプリケーションでインターネットへのアクセスが必要な場合は、値をtrueに設定することを推奨します。 デフォルト値:false 説明 クラスターの作成時にこの機能が無効になっている場合は、クラスターの作成後に手動でこの機能を有効にできます。 詳細については、「既存のACKクラスターを有効にしてインターネットにアクセスする」をご参照ください。 | |
endpoint_public_アクセス | Boolean | 不可 | true | クラスターのインターネットアクセスを有効にするかどうかを指定します。 elastic IPアドレス (EIP) を使用して、APIサーバーを公開できます。 これにより、インターネット経由でクラスターにアクセスできます。
デフォルト値: | |
load_balancer_spec | String | 任意 | slb.s2.small | クラスターAPIサーバー用に作成されるServer Load Balancer (SLB) インスタンスの仕様。 有効な値:
デフォルト値: | |
拡張設定 | タイムゾーン | String | 任意 | Asia/Shanghai | クラスターのタイムゾーンです。 詳細は、「タイムゾーン」をご参照ください。 |
proxy_mode | String | 任意 | ipvs | kube-proxy のモードです。 有効な値:
デフォルト値: | |
_rrsaを有効にする | Boolean | 不可 | true | サービスアカウントのRAMロール (RRSA) 機能を有効にするかどうかを指定します。 | |
tags | タグの配列 | 不可 | [{"key": "env", "value": "prod"}] | クラスターに追加するラベル。 ラベルには次の情報が含まれます。
| |
cluster_domain | String | 任意 | cluster.local | クラスターのドメイン名。 ドメイン名には、ピリオド (.) で区切られた1つ以上の部分を含めることができます。 各パートの長さは63文字を超えることはできません。英小文字、数字、およびハイフン (-) を使用できます。 各部分の先頭と末尾は、小文字または数字である必要があります。 | |
custom_san | String | 任意 | cs.aliyun.com | 指定したIPアドレスまたはドメイン名からのリクエストを受け付けるAPIサーバー証明書のカスタムサブジェクト代替名 (SAN) を指定します。 複数のIPアドレスとドメイン名はコンマ (,) で区切ります。 | |
service_account_発行者 | String | 任意 | kubernetes.default.svc | サービスアカウントは、ポッドがクラスターの | |
api_audiences | String | 任意 | kubernetes.default.svc | サービスアカウントは、ポッドがクラスターの | |
encryption_provider_key | String | 任意 | 0fe64791-55eb-4fc7-84c5-c6c7cdca **** | key Management Service (KMS) によって管理されるキーのID。 キーは、Secretsに格納されたデータを暗号化するために使用されます。 詳細については、「Key Management Service の概要」をご参照ください。 説明 この機能はACK Proクラスターのみをサポートします。 | |
timeout_mins | Long | 不可 | 60 | クラスター作成のタイムアウト期間を指定します。 単位:分 デフォルト値: | |
disable_rollback | Boolean | 不可 | true | クラスターの作成に失敗したときにロールバックを実行するかどうかを指定します。 有効な値:
デフォルト値: | |
deletion_protection | Boolean | 不可 | true | クラスターの削除保護を有効にするかどうかを指定します。 削除保護が有効になっている場合、ACKコンソールまたはAPI操作を呼び出してクラスターを削除することはできません。 有効な値:
デフォルト値: | |
コンポーネント設定 | アドオン | アドオンの配列 | 不可 | [{"name": "terway-eniip","config": ""}, {"name": "logtail-ds","config": "{\" IngressDashboardEnabled\":\" true\",\" sls_project_name\":\" \":\" your_sls_project_name\"}"}, {"ningress-ginx controller," "config": "{\" IngressSlbNetworkType\":\" internet\"}"}] | クラスターにインストールするコンポーネント。 クラスターを作成するときに、
ネットワークプラグイン: 必須です。 サポートされているネットワークプラグインはFlannelとTerwayです。 クラスターのプラグインの1つを選択します。
ボリュームプラグイン: オプション。 サポートされているボリュームプラグインは
簡易Log Serviceコンポーネント: オプション。 Simple Log Serviceを有効にすることを推奨します。 Simple Log Serviceが無効になっている場合、クラスター監査機能は使用できません。
Ingressコントローラ: オプション。 デフォルトでは、
イベントセンター (オプション) デフォルトでは、イベントセンター機能は有効になっています。 Kubernetesイベントセンターを使用して、イベントを保存およびクエリし、イベントに基づいてアラートを設定できます。 Kubernetesイベントセンターに関連付けられているログストアを90日以内に無料で使用できます。 詳細については、「イベントセンターの作成と使用」をご参照ください。 Kubernetesイベントセンターを有効にするには、次の形式でコンポーネントを指定します: [{"name":"ack-node-problem-detector","config":"{\" sls_project_name\":\" your_sls_project_name\"}"}] 。 |
controlplane_log_ttl | String | 任意 | 30 | 制御プレーンコンポーネントのログが収集される間隔。 有効な値: 1 ~ 3000 単位:日 デフォルト値: | |
controlplane_log_project | String | 任意 | k8s-log-xxx | 制御プレーンコンポーネントのログを保存するために使用されるSimple Log Serviceプロジェクト。 既存のプロジェクトを使用するか、作成することができます。 Simple Log Serviceプロジェクトを作成する場合、作成されたプロジェクトの名前はk8s-log-{ClusterID} 形式になります。 | |
controlplane_log_コンポーネント | 文字列の配列 | 不可 | ["apiserver" 、"kcm" 、"scheduler" 、"ccm"] | ログ収集を有効にする制御プレーンコンポーネントのリスト。 デフォルトでは、APIサーバー、KCM、スケジューラ、およびクラウドコントローラマネージャー (CCM) のログが収集されます。 | |
ノードプールの設定 | ノードプール | nodepoolの配列 | 不可 | ノードプールのパラメーター。 |
レスポンス構文
HTTP/1.1 200
Content-Type:application/json
{
"cluster_id" : "String",
"request_id" : "String",
"task_id" : "String"
}
レスポンスパラメーター
表 2. 応答ボディパラメータ
パラメーター | タイプ | 例 | 説明 |
cluster_id | String | cb95aa626a47740afbf6aa099b650 **** | クラスター ID |
request_id | String | 687C5BAA-D103-4993-884B-C35E4314A1E1 | リクエスト ID。 |
task_id | String | T-5a54309c80282e39ea00002f | タスク ID。 |
例: ACK管理クラスターの作成
リクエストの例
POST /clusters
<Common request headers>
{
"name":"managed Kubernetes cluster", // The name of the cluster. #required
"region_id":"cn-zhangjiakou", // The ID of the region where the cluster is deployed. #required
"cluster_type":"ManagedKubernetes", // The type of cluster. #required
"cluster_spec":"ack.pro.small", // The type of ACK managed cluster. ack.pro.small: ACK Pro cluster. ack.standard: ACK Basic cluster.
"kubernetes_version":"1.28.9-aliyun.1", // The Kubernetes version of the cluster. Only the latest three versions are available.
"resource_group_id":"rg-acfm3mkrure****",
"vpcid":"vpc-8vbh3b9a2f38urhls****", // The ID of the VPC in which you want to deploy the cluster. #required
"vswitch_ids":[ // The IDs of vSwitches that you want to use for the cluster. #required
"vsw-8vbmoffowsztjaawj****"
],
"pod_vswitch_ids":[ // Set this parameter if the cluster has Terway installed because each pod in the cluster uses a separate IP address.
"vsw-8vbo5fwyqiw0bbtlq****"
],
"container_cidr":"172.20.0.0/16", // The CIDR block of pods. #required. This parameter is optional if the cluster uses Terway as the network plug-in.
"service_cidr":"172.21.0.0/20", // The CIDR block of Services. #required
"security_group_id":"sg-8vb7grbyvlb10j0i****", // The existing security group that you want to use for the cluster. You must set the security_group_id or is_enterprise_security_group parameter.
"is_enterprise_security_group":true, // Specifies whether to create an advanced security group. You must set the security_group_id or is_enterprise_security_group parameter.
"node_cidr_mask":"25", // The maximum number of IP addresses that can be assigned to each node. This number is determined by the subnet mask of the specified CIDR block.
"snat_entry":true, // Specifies whether to configure SNAT rules for the VPC in which you want to deploy the cluster to enable Internet access for the cluster.
"endpoint_public_access":true, // Specifies whether to enable Internet access for the cluster.
"load_balancer_spec":slb.s2.small,
"timezone":"Asia/Shanghai", // The time zone of the cluster.
"proxy_mode":"ipvs", // The kube-proxy mode. Valid values: iptables and ipvs.
"enable_rrsa":true,
"tags":[ // The labels that you want to add to the cluster. The labels are applied to the ACK cluster, ECS instances, and nodes in the cluster.
{
"key":"tag-k",
"value":"tag-v"
}
],
"cluster_domain":"cluster.local", // The domain name of the cluster. Default value: cluster.local.
"custom_san":"cs.aliyuncs.com", // The custom SANs for the API server certificate.
"service_account_issuer":"kubernetes.default.svc", // Service account token volume projection. service_account_issuer is the issuer of the service account token, which corresponds to the iss field in the token payload.
"api_audiences":"kubernetes.default.svc", // Service account token volume projection. api-audiences are valid identifiers of tokens. Audiences are used to validate tokens at the API server side.
"encryption_provider_key":"8734596c-c0d6-4a63-a76e-fe72c7b0****", // The ID of the key that is managed by KMS. The key is used to encrypt Secrets in your cluster.
"timeout_mins":60, // The timeout period of cluster creation.
"disable_rollback":true, // Specifies whether to perform a rollback when the cluster fails to be created.
"deletion_protection":true, // Specifies whether to enable deletion protection for the cluster.
"addons":[ // The configurations of the components that you want to install in the cluster.
{
"name":"flannel" // To install the Terway plug-in, replace the value with {"name":"terway-eniip"}.
},
{
"name":"csi-plugin"
},
{
"name":"csi-provisioner"
},
{
"name":"logtail-ds",
"config":"{\"IngressDashboardEnabled\":\"true\"}"
},
{
"name":"ack-node-problem-detector",
"config":"{\"sls_project_name\":\"\"}"
},
{
"name":"nginx-ingress-controller", // The name of the component.
"config":"{\"IngressSlbNetworkType\":\"internet\"}", // The configuration of the component.
"disabled": true // Specifies whether to disable automatic installation.
},
{
"name":"arms-prometheus"
}
],
"controlplane_log_ttl" : "30",
"controlplane_log_project" : "k8s-log-xxx",
"controlplane_log_components" : ["apiserver","kcm","scheduler"],
"nodepools" : [ {
"auto_scaling" : {
"enable" : true,
"max_instances" : 10,
"min_instances" : 1,
"type" : "cpu"
},
"kubernetes_config" : {
"cms_enabled" : true,
"cpu_policy" : "none",
"labels" : [ {
"key" : "env",
"value" : "prod"
} ],
"runtime" : "containerd",
"runtime_version" : "1.6.20",
"taints" : [ {
"key" : "key",
"value" : "value",
"effect" : "NoSchedule"
} ],
"user_data" : "dGhpcyBpcyBhIGV4YW1wbGU=",
"node_name_mode" : "aliyun.com00055test"
},
"nodepool_info" : {
"name" : "cluster-demo",
"resource_group_id" : "rg-acfmyvw3wjmb****",
"type" : "ess"
},
"scaling_group" : {
"auto_renew" : true,
"auto_renew_period" : 1,
"data_disks" : [ {
"category" : "cloud_ssd",
"size" : 40,
"encrypted" : "true",
"auto_snapshot_policy_id" : "sp-2zej1nogjvovnz4z****",
"performance_level" : "PL1"
} ],
"image_id" : "aliyun_2_1903_x64_20G_alibase_20200529.vhd",
"instance_charge_type" : "PrePaid",
"instance_types" : [ "ecs.d1ne.2xlarge" ],
"key_pair" : "np-key-name",
"login_password" : "Hello1234",
"period" : 1,
"period_unit" : "Month",
"platform" : "AliyunLinux",
"rds_instances" : [ "rds-****" ],
"spot_strategy" : "NoSpot",
"spot_price_limit" : [ {
"instance_type" : "ecs.c6.large",
"price_limit" : "0.39"
} ],
"scaling_policy" : "release",
"security_group_id" : "sg-wz9a8g2mt6x5llu0****",
"security_group_ids" : [ "sg-wz9a8g2mt6x5llu0****" ],
"system_disk_category" : "cloud_efficiency",
"system_disk_size" : 120,
"system_disk_performance_level" : "PL1",
"tags" : [ {
"key" : "node-k-1",
"value" : "node-v-1"
} ],
"vswitch_ids" : [ "vsw-wz9mfnhmssud6eicu****" ],
"multi_az_policy" : "COST_OPTIMIZED",
"on_demand_base_capacity" : 0,
"on_demand_percentage_above_base_capacity" : 20,
"spot_instance_pools" : 5,
"spot_instance_remedy" : false,
"compensate_with_on_demand" : true,
"internet_charge_type" : "PayByTraffic",
"internet_max_bandwidth_out" : 5,
"image_type" : "AliyunLinux",
"deploymentset_id" : "ds-bp1d19mmbsv3jf6xxxxx",
"desired_size" : 0
},
"tee_config" : {
"tee_enable" : true
},
"management" : {
"enable" : false,
"auto_repair" : false,
"upgrade_config" : {
"auto_upgrade" : false,
"surge" : 0,
"surge_percentage" : 0,
"max_unavailable" : 1
}
},
"count" : 1,
"interconnect_mode" : "basic",
"interconnect_config" : {
"cen_id" : "cen-ey9k9nfhz0f*******",
"ccn_id" : "ccn-qm5i0i0q9yi*******",
"ccn_region_id" : "cn-shanghai",
"bandwidth" : 10,
"improved_period" : "1"
},
"max_nodes" : 10
} ]
}
正常に処理された場合のレスポンス例
XML形式
<cluster_id>cb95aa626a47740afbf6aa099b65****</cluster_id>
<task_id>687C5BAA-D103-4993-884B-C35E4314A1E1</task_id>
<request_id>T-5a54309c80282e39ea00002f</request_id>
JSON 形式
{
"cluster_id": "cb95aa626a47740afbf6aa099b65****",
"request_id": "687C5BAA-D103-4993-884B-C35E4314A1E1",
"task_id": "T-5a54309c80282e39ea00002f"
}
エラーコード
エラーコードの一覧については、「サービスエラーコード」をご参照ください。