本頁說明如何建立使用 AWS 專屬執行個體或專屬主機的叢集和節點集區。專屬主機和執行個體僅供您使用,不會與其他 AWS 客戶共用。專屬主機和執行個體的設定稱為「租戶」。
事前準備
如要在 AWS 上的 GKE 使用專屬執行個體或主機,您必須建立 1.22.8-gke.200 以上版本的新叢集。您無法升級現有叢集並新增專屬主機。
叢集需求
建立叢集前,請先完成必要條件。具體來說,您必須提供下列資源:
- 叢集執行的 AWS 虛擬私有雲。
- 最多可為三個控制層副本提供三個 AWS 子網路。每個執行個體都必須位於不同的 AWS 可用區。
- GKE on AWS 管理叢集時擔任的 AWS IAM 角色。這需要一組特定的身分與存取權管理權限。
- 用於叢集資料 (etcd) 和設定靜態加密的 KMS 對稱 CMK 金鑰。
- 每個控制層副本的 AWS IAM 執行個體設定檔。這需要一組特定的 IAM 權限。
- EC2 安全殼層金鑰組 (選用),如果您需要透過安全殼層存取執行各個控制平面副本的 EC2 執行個體。
您有責任建立及管理這些資源,這些資源可供所有 Anthos 叢集共用。所有其他基礎叢集範圍的 AWS 資源,都由 GKE on AWS 管理。
這些操作說明會使用 GKE Multi-Cloud API 建立叢集和節點集區。使用 GKE Multi-Cloud API 前,請務必先熟悉 Google Cloud API。
專用主機和專用執行個體
建立叢集或節點集區時,您可以選擇下列其中一個選項:
DEFAULT
:使用 VPC 的預設租戶啟動執行個體DEDICATED
:在專屬執行個體上啟動執行個體HOST
:在專屬主機上啟動執行個體
建立叢集或節點集區前,請先決定適合自己的選項。
詳情請參閱 AWS 說明文件中的「使用啟動設定設定執行個體租戶」、「專屬執行個體」和「專屬主機」。
在叢集中混合使用租戶設定
您可以分別為每個控制層和節點集區設定租戶設定。舉例來說,您可以在共用主機上建立叢集和控制層,在專屬主機上建立節點集區,並在共用主機上建立另一個節點集區。
分配專用主機
使用專屬主機建立叢集前,您需要為叢集所需的所有執行個體分配主機。主機應具備下列屬性:
- 使用叢集資源所需的執行個體系列
- 分配到您預計建立叢集的相同區域
- 啟用自動刊登位置
- 您有足夠的配額可啟動專屬主機
如要進一步瞭解如何配置專屬主機,請參閱「開始使用專屬主機」。
限制
本節列出 GKE on AWS 專屬主機支援的限制。
節點集區
您無法更新節點集區的租戶設定。如要將工作負載移至具有其他租戶設定的執行個體,請使用所需租戶建立新的節點集區,並刪除現有節點集區。
支援的執行個體系列
GKE on AWS 支援下列執行個體系列的專屬主機。
- t3
- m5
- m5d
- c5
- c5d
- r5
- r5d
- i3en
不支援其他執行個體系列。
節點類型
僅支援 Linux 節點集區。
建立叢集
您可以使用 Method: projects.locations.awsClusters.create,透過 GKE Multi-Cloud API 建立支援專屬主機的叢集。如要建立叢集,請執行下列步驟:
gcloud
下列範例會建立具有專屬主機的叢集。使用下列任何指令資料之前,請先替換以下項目:
- CLUSTER_NAME:您選擇的叢集名稱
- GOOGLE_CLOUD_LOCATION:管理叢集的支援 Google Cloud 區域,例如
us-west1
- AWS_REGION:用於建立叢集的 AWS 區域
- :GKE Multi-cloud API 角色的 ARNAPI_ROLE_ARN
- CONFIG_KMS_KEY_ARN:用於加密使用者資料的 AWS KMS 金鑰 Amazon Resource Name (ARN)
- DB_KMS_KEY_ARN:用於加密叢集密鑰的 AWS KMS 金鑰 Amazon Resource Name (ARN)
- CONTROL_PLANE_PROFILE:與叢集相關聯的 IAM 執行個體設定檔
- CONTROL_PLANE_SUBNET_1、CONTROL_PLANE_SUBNET_2,以及叢集三個控制層執行個體的子網路 ID CONTROL_PLANE_SUBNET_3
- TENANCY_TYPE:控制層的租戶設定。可以是
DEFAULT
、DEDICATED
或HOST
。 - CLUSTER_VERSION:支援的叢集版本
- FLEET_PROJECT:叢集將註冊至的機群主專案。如要從其他專案管理這個叢集,請參閱 跨專案註冊。
- POD_ADDRESS_CIDR_BLOCKS:叢集 Pod 的 CIDR 位址範圍
- SERVICE_ADDRESS_CIDR_BLOCKS:叢集服務的 CIDR 位址範圍
- VPC_ID:這個叢集的 AWS 虛擬私有雲 ID
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud alpha container aws clusters create CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --aws-region AWS_REGION \ --role-arn API_ROLE_ARN \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --vpc-id VPC_ID \ --tags="control-plane=CLUSTER_NAME"
Windows (PowerShell)
gcloud alpha container aws clusters create CLUSTER_NAME ` --location GOOGLE_CLOUD_LOCATION ` --aws-region AWS_REGION ` --role-arn API_ROLE_ARN ` --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ` --database-encryption-kms-key-arn DB_KMS_KEY_ARN ` --iam-instance-profile CONTROL_PLANE_PROFILE ` --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 ` --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION ` --fleet-project FLEET_PROJECT ` --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS ` --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS ` --vpc-id VPC_ID ` --tags="control-plane=CLUSTER_NAME"
Windows (cmd.exe)
gcloud alpha container aws clusters create CLUSTER_NAME ^ --location GOOGLE_CLOUD_LOCATION ^ --aws-region AWS_REGION ^ --role-arn API_ROLE_ARN ^ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^ --database-encryption-kms-key-arn DB_KMS_KEY_ARN ^ --iam-instance-profile CONTROL_PLANE_PROFILE ^ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 ^ --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION ^ --fleet-project FLEET_PROJECT ^ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS ^ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS ^ --vpc-id VPC_ID ^ --tags="control-plane=CLUSTER_NAME"
REST
下列範例會建立具有專屬主機的叢集。使用任何要求資料之前,請先替換以下項目:
- ENDPOINT:您的 Google Cloud 服務端點
- PROJECT_ID:您的 Google Cloud 專案
- USERNAME:可做為叢集管理員執行作業的使用者
- CLUSTER_NAME:您選擇的叢集名稱
- GOOGLE_CLOUD_LOCATION:管理叢集的支援 Google Cloud 區域,例如
us-west1
- AWS_REGION:用於建立叢集的 AWS 區域
- :GKE Multi-cloud API 角色的 ARNAPI_ROLE_ARN
- CONFIG_KMS_KEY_ARN:用於加密使用者資料的 AWS KMS 金鑰 Amazon Resource Name (ARN)
- DB_KMS_KEY_ARN:用於加密叢集密鑰的 AWS KMS 金鑰 Amazon Resource Name (ARN)
- CONTROL_PLANE_PROFILE:與叢集相關聯的 IAM 執行個體設定檔
- CONTROL_PLANE_SUBNET_1、CONTROL_PLANE_SUBNET_2,以及叢集三個控制層執行個體的子網路 ID CONTROL_PLANE_SUBNET_3
- TENANCY_TYPE:控制層的租戶設定。可以是
DEFAULT
、DEDICATED
或HOST
。 - CLUSTER_VERSION:支援的叢集版本
- FLEET_PROJECT:叢集將註冊至的機群主專案。如要從其他專案管理這個叢集,請參閱 跨專案註冊。
- POD_ADDRESS_CIDR_BLOCKS:叢集 Pod 的 CIDR 位址範圍
- SERVICE_ADDRESS_CIDR_BLOCKS:叢集服務的 CIDR 位址範圍
- VPC_ID:這個叢集的 AWS 虛擬私有雲 ID
HTTP 方法和網址:
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters
JSON 要求主體:
{ "name": "CLUSTER_NAME", "authorization": { "adminUsers": [ { "username": "USERNAME" } ] }, "awsRegion": "AWS_REGION", "controlPlane": { "awsServicesAuthentication": { "roleArn": "API_ROLE_ARN" }, "configEncryption": { "kmsKeyArn": "CONFIG_KMS_KEY_ARN" }, "databaseEncryption": { "kmsKeyArn": "DB_KMS_KEY_ARN" }, "iamInstanceProfile": "CONTROL_PLANE_PROFILE", "mainVolume": {}, "rootVolume": {}, "sshConfig": {}, "subnetIds": [ "CONTROL_PLANE_SUBNET_1", "CONTROL_PLANE_SUBNET_2", "CONTROL_PLANE_SUBNET_3" ], "tags": { "google:gkemulticloud:cluster": "CLUSTER_NAME" }, "instancePlacement": { "tenancy": "TENANCY_TYPE" }, "version": "CLUSTER_VERSION" }, "fleet": { "project": "FLEET_PROJECT" }, "networking": { "podAddressCidrBlocks": [ "POD_ADDRESS_CIDR_BLOCKS" ], "serviceAddressCidrBlocks": [ "SERVICE_ADDRESS_CIDR_BLOCKS" ], "vpcId": "VPC_ID" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
如需其他選項,請參閱「方法:projects.locations.awsClusters.create」參考說明文件。
建立節點集區
gcloud
下列範例會建立含有專屬主機的節點集區。建立節點集區時,集區內的所有執行個體都會採用相同的執行個體類型和保有權設定。使用下列任何指令資料之前,請先替換以下項目:
- GOOGLE_CLOUD_LOCATION:支援的 Google Cloud 區域
- CLUSTER_NAME:叢集名稱
- NODE_POOL_NAME:管理叢集的節點集區名稱,例如
us-west1
- MIN_NODES:節點集區可包含的節點數量下限
- MAX_NODES:節點集區可包含的節點數量上限
- CONFIG_KMS_KEY_ARN:用於加密使用者資料的 AWS KMS 金鑰 Amazon 資源名稱 (ARN)
- NODEPOOL_PROFILE:節點集區 VM 的 IAM 執行個體設定檔
- ROOT_VOLUME_SIZE:每個節點根磁碟區的所需大小 (單位為 Gb)
- TENANCY_TYPE:控制層的租戶設定。可以是
DEFAULT
、DEDICATED
或HOST
。 - INSTANCE_TYPE:這個節點集區所需的 AWS 機器執行個體類型
- NODEPOOL_SUBNET:節點集區將在其中執行的子網路 ID。如果這個子網路不在 VPC 主要 CIDR 區塊內,則需要執行一些額外步驟。詳情請參閱安全性群組。
- CLUSTER_VERSION:支援的叢集版本
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud alpha container aws node-pools create NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --min-nodes MIN_NODES \ --max-nodes MAX_NODES \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile NODEPOOL_PROFILE \ --root-volume-size ROOT_VOLUME_SIZE \ --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE \ --subnet-id NODEPOOL_SUBNET \ --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \ --node-version CLUSTER_VERSION \ --max-pods-per-node 110 \ --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
Windows (PowerShell)
gcloud alpha container aws node-pools create NODE_POOL_NAME ` --cluster CLUSTER_NAME ` --location GOOGLE_CLOUD_LOCATION ` --min-nodes MIN_NODES ` --max-nodes MAX_NODES ` --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ` --iam-instance-profile NODEPOOL_PROFILE ` --root-volume-size ROOT_VOLUME_SIZE ` --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE ` --subnet-id NODEPOOL_SUBNET ` --ssh-ec2-key-pair SSH_KEY_PAIR_NAME ` --node-version CLUSTER_VERSION ` --max-pods-per-node 110 ` --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
Windows (cmd.exe)
gcloud alpha container aws node-pools create NODE_POOL_NAME ^ --cluster CLUSTER_NAME ^ --location GOOGLE_CLOUD_LOCATION ^ --min-nodes MIN_NODES ^ --max-nodes MAX_NODES ^ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^ --iam-instance-profile NODEPOOL_PROFILE ^ --root-volume-size ROOT_VOLUME_SIZE ^ --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE ^ --subnet-id NODEPOOL_SUBNET ^ --ssh-ec2-key-pair SSH_KEY_PAIR_NAME ^ --node-version CLUSTER_VERSION ^ --max-pods-per-node 110 ^ --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
REST
下列範例會建立含有專屬主機的節點集區。建立節點集區時,集區內的所有執行個體都會採用相同的執行個體類型和保有權設定。使用任何要求資料之前,請先替換以下項目:
- ENDPOINT:您的 Google Cloud 服務端點
- PROJECT_ID:您的 Google Cloud 專案
- USERNAME:可做為叢集管理員執行作業的使用者
- GOOGLE_CLOUD_LOCATION:支援的 Google Cloud 區域
- CLUSTER_NAME:叢集名稱
- NODE_POOL_NAME:管理叢集的節點集區名稱,例如
us-west1
- MIN_NODES:節點集區可包含的節點數量下限
- MAX_NODES:節點集區可包含的節點數量上限
- CONFIG_KMS_KEY_ARN:用於加密使用者資料的 AWS KMS 金鑰 Amazon 資源名稱 (ARN)
- NODEPOOL_PROFILE:節點集區 VM 的 IAM 執行個體設定檔
- ROOT_VOLUME_SIZE:每個節點根磁碟區的所需大小 (單位為 Gb)
- TENANCY_TYPE:控制層的租戶設定。可以是
DEFAULT
、DEDICATED
或HOST
。 - INSTANCE_TYPE:這個節點集區所需的 AWS 機器執行個體類型
- NODEPOOL_SUBNET:節點集區將在其中執行的子網路 ID。如果這個子網路不在 VPC 主要 CIDR 區塊內,則需要執行一些額外步驟。詳情請參閱安全性群組。
- CLUSTER_VERSION:支援的叢集版本
HTTP 方法和網址:
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/CLUSTER_NAME/awsNodePools
JSON 要求主體:
{ "name": "NODE_POOL_NAME", "autoscaling": { "minNodeCount": MIN_NODES, "maxNodeCount": MAX_NODES }, "config": { "configEncryption": { "kmsKeyArn": "CONFIG_KMS_KEY_ARN" }, "iamInstanceProfile": "NODEPOOL_PROFILE", "rootVolume": { "sizeGib": ROOT_VOLUME_SIZE }, "instancePlacement": { "tenancy": "TENANCY_TYPE" }, "instanceType" : "INSTANCE_TYPE" "tags": { "google:gkemulticloud:cluster": "NODE_POOL_NAME" } }, "maxPodsConstraint": { "maxPodsPerNode": "110" }, "subnetId": "NODEPOOL_SUBNET", "version": "CLUSTER_VERSION" }
如要傳送要求,請展開以下其中一個選項:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
如需其他選項,請參閱「方法:projects.locations.awsClusters.awsNodePools.create」參考說明文件。
正在清除所用資源
如要刪除使用專屬主機的叢集,請按照下列步驟操作:
後續步驟
- 閱讀 AWSInstancePlacement API 參考說明文件。