전용 호스트로 클러스터 만들기

이 페이지에서는 AWS 전용 인스턴스 또는 전용 호스트를 사용하는 클러스터와 노드 풀을 만드는 방법을 보여줍니다. 전용 호스트와 인스턴스는 단독으로 사용되도록 예약되며 다른 AWS 고객과 공유되지 않습니다. 전용 호스트 및 인스턴스의 설정을 테넌시라고 합니다.

시작하기 전에

AWS용GKE에서 전용 인스턴스 또는 호스트를 사용하려면 새 클러스터 버전 1.22.8-gke.200 이상을 만들어야 합니다. 기존 클러스터를 업그레이드하고 전용 호스트를 추가할 수 없습니다.

클러스터 요구사항

클러스터를 만들기 전 기본 요건을 만들어야 합니다. 특히 다음 리소스를 제공해야 합니다.

  • 클러스터가 실행되는 AWS VPC
  • 3개의 제어 영역 복제본을 위한 최대 3개의 AWS 서브넷. 각 서브넷은 서로 다른 AWS 가용성 영역에 있어야 합니다.
  • 클러스터를 관리할 때 AWS용 GKE가 가정하는 AWS IAM 역할. 여기에는 IAM 권한 집합이 필요합니다.
  • 클러스터 데이터(etcd)의 저장 상태에서 암호화를 위한 KMS 대칭 CMK 키와 구성
  • 각 제어 영역 복제본을 위한 AWS IAM 인스턴스 프로필. 여기에는 IAM 권한 집합이 필요합니다.
  • 각 제어 영역 복제본에서 실행되는 EC2 인스턴스에 대해 SSH 액세스가 필요한 경우의 EC2 SSH 키 상(선택사항)

사용자가 모든 Anthos 클러스터 간에 공유될 수 있는 이러한 리소스를 만들고 관리해야 합니다. 다른 모든 기본 클러스터 범위의 AWS 리소스는 AWS용 GKE에서 관리됩니다.

이 안내에서는 GKE Multi-cloud API를 사용하여 클러스터 및 노드 풀을 만듭니다. GKE Multi-cloud API를 사용하려면 Google Cloud API에 익숙해야 합니다.

전용 호스트 및 전용 인스턴스

클러스터 또는 노드 풀을 만들 때는 다음 옵션 중 하나를 선택합니다.

  • DEFAULT: VPC의 기본 테넌시로 인스턴스 시작
  • DEDICATED: 전용 인스턴스에서 인스턴스 시작
  • HOST: 전용 호스트에서 인스턴스 시작

클러스터 또는 노드 풀을 만들기 전에 어떤 옵션이 적절한지 결정하세요.

자세한 내용은 AWS 문서에서 시작 구성으로 인스턴스 테넌시 구성 ,전용 인스턴스 ,전용 호스트를 참조하세요.

클러스터에서 테넌시 설정을 혼합하여 사용

각 제어 영역 및 노드 풀에 대해 테넌시 설정을 개별적으로 구성할 수 있습니다. 예를 들어 공유 호스트의 제어 영역, 전용 호스트의 노드 풀, 공유 호스트의 다른 노드 풀이 있는 클러스터를 만들 수 있습니다.

전용 호스트 할당

전용 호스트로 클러스터를 만들기 전에 클러스터에 필요한 모든 인스턴스에 호스트를 할당해야 합니다. 호스트에 다음 속성이 있어야 합니다.

  • 클러스터 리소스에 필요한 것과 동일한 인스턴스 유형 모음 사용
  • 클러스터를 만들려는 영역과 같은 영역에 할당
  • 자동 배치 사용 설정
  • 전용 호스트를 실행하기에 충분한 할당량

전용 호스트 할당에 대한 자세한 내용은 전용 호스트 시작하기를 참조하세요.

제한사항

이 섹션에는 AWS용 GKE의 전용 호스트 지원의 제한사항이 나와 있습니다.

노드 풀

노드 풀의 테넌시 설정을 업데이트할 수 없습니다. 다른 테넌시 설정으로 워크로드를 인스턴스로 옮기려면 원하는 테넌시로 새 노드 풀을 만들고 기존 노드 풀을 삭제합니다.

지원되는 인스턴스 유형 모음

AWS용 GKE는 다음 인스턴스 유형 모음의 전용 호스트를 지원합니다.

  • t3
  • m5
  • m5d
  • c5
  • c5d
  • r5
  • r5d
  • i3en

다른 인스턴스 유형 모음은 지원되지 않습니다.

노드 유형

Linux 노드 풀만 지원됩니다.

클러스터 만들기

GKE Multi-cloud API를 사용하여 Method: projects.locations.awsClusters.create를 통해 전용 호스트를 지원하는 클러스터를 만듭니다. 클러스터를 만들려면 다음 단계를 수행합니다.

gcloud

다음 샘플은 전용 호스트가 있는 클러스터를 만듭니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

    • CLUSTER_NAME: 선택한 클러스터 이름
    • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 지원되는 Google Cloud 리전(예: us-west1)
    • AWS_REGION: 클러스터를 만들 AWS 리전
    • API_ROLE_ARN: GKE Multi-cloud API 역할의 ARN
    • CONFIG_KMS_KEY_ARN: 사용자 데이터를 암호화할 AWS KMS 키의 Amazon 리소스 이름(ARN)
    • DB_KMS_KEY_ARN: 클러스터 보안 비밀을 암호화할 AWS KMS 키의 Amazon 리소스 이름(ARN)
    • CONTROL_PLANE_PROFILE: 클러스터와 연결된 IAM 인스턴스의 프로필
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3을 클러스터의 3개 제어 영역 인스턴스에 대한 서브넷 ID로 바꿉니다.
    • TENANCY_TYPE: 제어 영역의 테넌시에 대한 설정. DEFAULT, DEDICATED, HOST일 수 있습니다.
    • CLUSTER_VERSION: 지원되는 클러스터 버전
    • FLEET_PROJECT: 클러스터를 등록할 Fleet 호스트 프로젝트. 다른 프로젝트에서 이 클러스터를 관리하려면 프로젝트 간 등록을 참조하세요.
    • POD_ADDRESS_CIDR_BLOCKS: 클러스터 포드의 CIDR IP 주소 범위
    • SERVICE_ADDRESS_CIDR_BLOCKS: 클러스터 서비스의 CIDR IP 주소 범위
    • VPC_ID: 이 클러스터의 AWS VPC 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 리전
    • API_ROLE_ARN: GKE Multi-cloud API 역할의 ARN
    • CONFIG_KMS_KEY_ARN: 사용자 데이터를 암호화할 AWS KMS 키의 Amazon 리소스 이름(ARN)
    • DB_KMS_KEY_ARN: 클러스터 보안 비밀을 암호화할 AWS KMS 키의 Amazon 리소스 이름(ARN)
    • CONTROL_PLANE_PROFILE: 클러스터와 연결된 IAM 인스턴스의 프로필
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3을 클러스터의 3개 제어 영역 인스턴스에 대한 서브넷 ID로 바꿉니다.
    • TENANCY_TYPE: 제어 영역의 테넌시에 대한 설정. DEFAULT, DEDICATED, HOST일 수 있습니다.
    • CLUSTER_VERSION: 지원되는 클러스터 버전
    • FLEET_PROJECT: 클러스터를 등록할 Fleet 호스트 프로젝트. 다른 프로젝트에서 이 클러스터를 관리하려면 프로젝트 간 등록을 참조하세요.
    • POD_ADDRESS_CIDR_BLOCKS: 클러스터 포드의 CIDR IP 주소 범위
    • SERVICE_ADDRESS_CIDR_BLOCKS: 클러스터 서비스의 CIDR IP 주소 범위
    • VPC_ID: 이 클러스터의 AWS VPC ID

HTTP 메서드 및 URL:

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 메서드 및 URL:

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. 노드 풀과 클러스터를 삭제하면 전용 호스트 출시를 수행할 수 있습니다.

다음 단계