建立專屬主機叢集

本頁說明如何建立使用 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_1CONTROL_PLANE_SUBNET_2,以及叢集三個控制層執行個體的子網路 ID CONTROL_PLANE_SUBNET_3
    • TENANCY_TYPE:控制層的租戶設定。可以是 DEFAULTDEDICATEDHOST
    • 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_1CONTROL_PLANE_SUBNET_2,以及叢集三個控制層執行個體的子網路 ID CONTROL_PLANE_SUBNET_3
    • TENANCY_TYPE:控制層的租戶設定。可以是 DEFAULTDEDICATEDHOST
    • 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:控制層的租戶設定。可以是 DEFAULTDEDICATEDHOST
    • 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:控制層的租戶設定。可以是 DEFAULTDEDICATEDHOST
    • 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」參考說明文件。

正在清除所用資源

如要刪除使用專屬主機的叢集,請按照下列步驟操作:

  1. 刪除所有節點集區
  2. 刪除叢集
  3. 刪除節點集區和叢集後,您可以發布專屬主機

後續步驟