이 페이지에서는 특정 GKE 워크로드에서 예약된 Compute Engine 영역별 리소스를 사용하는 방법을 보여줍니다. 이러한 용량 예약을 통해 워크로드에 특정 하드웨어를 사용할 수 있도록 보장합니다.
소비 유형, 공유 유형, 프로비저닝 유형과 같은 Compute Engine 예약 개념을 이미 숙지하고 있는지 확인하세요. 자세한 내용은 Compute Engine 영역별 리소스 예약을 참조하세요.
이 페이지는 다음 사용자를 대상으로 합니다.
- 애플리케이션 운영자: 가능한 한 빨리 실행해야 하는 워크로드를 배포합니다. 일반적으로 GPU와 같은 특수 하드웨어를 사용합니다.
- 플랫폼 관리자: 애플리케이션 및 조직 요구사항을 모두 충족하는 최적화된 하드웨어에서 워크로드가 실행된다는 높은 수준의 보장을 받길 원합니다.
GKE의 예약 사용 정보
Compute Engine 용량 예약을 사용하면 즉시 또는 지정된 미래 시간에 Google Cloud 영역에서 특정 하드웨어 구성을 프로비저닝할 수 있습니다. 그런 다음 GKE에서 이 예약된 용량을 사용할 수 있습니다.
GKE 작업 모드에 따라 다음 예약 유형을 사용할 수 있습니다.
- Autopilot 모드: 특정 예약만 해당
- Standard 모드: 특정 예약 또는 일치하는 예약
예약을 사용하여 리소스를 만들려면 any
또는 specific
과 같은 예약 어피니티를 지정해야 합니다.
GKE의 예약 사용 옵션
GKE를 사용하면 워크로드 매니페스트에서 Kubernetes nodeSelectors를 사용하거나 예약을 사용하는 Standard 모드 노드 풀을 만들어 개별 워크로드에서 예약을 직접 사용할 수 있습니다. 이 페이지에서는 개별 리소스에서 예약을 직접 선택하는 방법을 설명합니다.
커스텀 컴퓨팅 클래스를 사용하여 새 노드를 만드는 확장 작업 중에 예약이 사용되도록 GKE를 구성할 수도 있습니다. 커스텀 컴퓨팅 클래스를 사용하면 플랫폼 관리자가 노드 확장 중에 GKE가 우선시할 노드 구성의 계층 구조를 정의하여 선택한 하드웨어에서 워크로드를 실행할 수 있습니다.
커스텀 컴퓨팅 클래스를 사용하는 GKE 워크로드가 해당 컴퓨팅 클래스에서 지정된 예약을 사용하도록 GKE에 지시하여 커스텀 컴퓨팅 클래스 구성에서 예약을 지정할 수 있습니다.
자세한 내용은 '커스텀 컴퓨팅 클래스 정보' 페이지의 Compute Engine 예약 사용을 참조하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
Autopilot 클러스터에서 예약한 용량 사용
Autopilot 클러스터는 동일한 프로젝트 또는 공유 프로젝트에서 Compute Engine 용량 예약의 리소스 사용을 지원합니다. 대상 예약의 소비 유형 속성을 특정으로 설정하고 매니페스트에서 해당 예약을 명시적으로 선택해야 합니다. 예약을 명시적으로 지정하지 않으면 Autopilot 클러스터는 예약을 사용하지 않습니다. 예약 소비 유형에 대한 자세한 내용은 예약의 작동 원리를 참조하세요.
이러한 예약은 Compute 가변형 약정 사용 할인 대상이 됩니다. 예약 용량을 사용하려면 Accelerator
컴퓨팅 클래스 또는 Performance
컴퓨팅 클래스를 사용해야 합니다.
시작하기에 앞서 다음 버전을 실행하는 Autopilot 클러스터를 만듭니다.
- GPU와 같은 예약된 가속기를 사용하려면 1.28.6-gke.1095000 이상이 필요합니다.
- 특정 머신 시리즈에서 포드를 실행하고 각 포드를 자체 노드에서 실행하려면 1.28.6-gke.1369000 이상 또는 1.29.1-gke.1575000 버전 이상이어야 합니다.
Autopilot 용량 예약
Autopilot 포드는 클러스터와 동일한 프로젝트 또는 다른 프로젝트에서 공유된 예약의 특정 소비 유형 속성이 있는 예약을 사용할 수 있습니다. 매니페스트에서 예약을 명시적으로 참조하여 예약된 하드웨어를 사용할 수 있습니다. Autopilot에서 다음 유형의 하드웨어에 대해 예약을 사용할 수 있습니다.
다음 유형의 GPU:
nvidia-gb200
: NVIDIA GB200 (미리보기)nvidia-b200
: NVIDIA B200(180GB)nvidia-h200-141gb
: NVIDIA H200(141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega(80GB)nvidia-h100-80gb
: NVIDIA H100(80GB)nvidia-a100-80gb
: NVIDIA A100(80GB)nvidia-tesla-a100
: NVIDIA A100(40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
다음 유형의 TPU:
tpu-v6e-slice
: TPU v6e 슬라이스tpu-v5p-slice
: TPU v5p 슬라이스tpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: TPU v5 lite 기기tpu-v4-lite-device
: TPU v4 lite 기기tpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: TPU v3 기기tpu-v3-slice
: TPU v3 podslice
용량을 예약하려면 다음 리소스를 참조하세요. 예약은 다음 요구사항을 충족해야 합니다.
- 머신 유형, 가속기 유형, 가속기 수량이 워크로드에서 사용하는 것과 일치합니다.
예약은 특정 소비 유형을 사용합니다. 예를 들어 gcloud CLI에서 예약을 만들 때
--require-specific-reservation
플래그를 지정해야 합니다.
GKE는 선택한 특정 예약의 로컬 SSD를 노드에 자동으로 연결합니다. 워크로드 매니페스트에서 개별 로컬 SSD를 선택할 필요가 없습니다. 예를 들어 선택한 예약에 로컬 SSD가 2개 포함되어 있으면 GKE가 해당 예약에서 만드는 노드에 로컬 SSD 2개가 연결됩니다.
Autopilot 클러스터의 동일한 프로젝트에서 특정 예약 사용
이 섹션에서는 클러스터와 동일한 프로젝트에 있는 특정 예약 용량을 사용하는 방법을 보여줍니다. kubectl 또는 Terraform을 사용할 수 있습니다.
kubectl
다음 매니페스트를
specific-autopilot.yaml
로 저장합니다. 이 매니페스트에는 특정 예약을 사용하는 노드 선택기가 있습니다. VM 인스턴스 또는 가속기를 사용할 수 있습니다.VM 인스턴스
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 2 memory: "4Gi"
다음을 바꿉니다.
MACHINE_SERIES
: 특정 용량 예약에 있는 VM의 머신 유형을 포함하는 머신 시리즈입니다. 예를 들어c3-standard-4
머신 유형을 예약하는 경우MACHINE_SERIES
필드에c3
을(를) 지정합니다.RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.
GPU 가속기
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
다음을 바꿉니다.
ACCELERATOR
: Compute Engine 용량 예약에서 예약한 가속기입니다. 다음 값 중 하나여야 합니다.nvidia-gb200
: NVIDIA GB200 (미리보기)nvidia-b200
: NVIDIA B200(180GB)nvidia-h200-141gb
: NVIDIA H200(141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega(80GB)nvidia-h100-80gb
: NVIDIA H100(80GB)nvidia-a100-80gb
: NVIDIA A100(80GB)nvidia-tesla-a100
: NVIDIA A100(40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.QUANTITY
: 컨테이너에 연결할 GPU의 수입니다. 지원되는 GPU 수량에 설명된 것처럼 지정된 GPU에 대해 지원되는 수량이어야 합니다.
TPU 가속기
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: ACCELERATOR cloud.google.com/gke-tpu-topology: TOPOLOGY cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: google.com/tpu: QUANTITY
다음을 바꿉니다.
ACCELERATOR
: Compute Engine 용량 예약에서 예약한 가속기입니다. 다음 값 중 하나여야 합니다.tpu-v6e-slice
: TPU v6e 슬라이스tpu-v5p-slice
: TPU v5p 슬라이스tpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: TPU v5 lite 기기tpu-v4-lite-device
: TPU v4 lite 기기tpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: TPU v3 기기tpu-v3-slice
: TPU v3 podslice
TOPOLOGY
: TPU 토폴로지입니다.RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.QUANTITY
: 컨테이너에 연결할 TPU 수입니다. TPU 토폴로지와 일치해야 합니다.
포드를 배포합니다.
kubectl apply -f specific-autopilot.yaml
Autopilot은 지정된 예약의 예약된 용량을 사용하여 포드를 배치하도록 새 노드를 프로비저닝합니다.
Terraform
Terraform을 사용하여 VM 인스턴스와 동일한 프로젝트에서 특정 예약을 사용하려면 다음 예시를 참조하세요.
Terraform을 사용하여 가속기 컴퓨팅 클래스가 있는 동일한 프로젝트에서 특정 예약을 사용하려면 다음 예시를 참조하세요.
Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.
Autopilot에서 특정 공유 예약 사용
이 섹션에서는 다음 용어를 사용합니다.
- 소유자 프로젝트: 예약을 소유하고 다른 프로젝트와 공유하는 프로젝트입니다.
- 소비자 프로젝트: 공유 예약을 사용하는 워크로드를 실행하는 프로젝트입니다.
공유 예약을 사용하려면 GKE 서비스 에이전트에 예약 소유자 프로젝트의 예약에 대한 액세스 권한을 부여해야 합니다. 다음 단계를 따르세요.
소유자 프로젝트에서
compute.reservations.list
권한이 포함된 커스텀 IAM 역할을 만듭니다.gcloud iam roles create ROLE_NAME \ --project=OWNER_PROJECT_ID \ --permissions='compute.reservations.list'
다음을 바꿉니다.
ROLE_NAME
: 새 역할의 이름입니다.OWNER_PROJECT_ID
: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.
소유자 프로젝트의 공유 예약을 나열할 수 있는 액세스 권한을 소비자 프로젝트의 GKE 서비스 에이전트에 부여합니다.
gcloud projects add-iam-policy-binding OWNER_PROJECT_ID \ --project=OWNER_PROJECT_ID \ --member=serviceAccount:service-CONSUMER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role='projects/OWNER_PROJECT_ID/roles/ROLE_NAME'
CONSUMER_PROJECT_NUMBER
를 소비자 프로젝트의 숫자 프로젝트 번호로 바꿉니다. 이 번호를 찾으려면 Resource Manager 문서의 프로젝트 식별을 참조하세요.다음 매니페스트를
shared-autopilot.yaml
로 저장합니다. 이 매니페스트에는 GKE에 특정 공유 예약을 사용하라고 지시하는 nodeSelector가 있습니다.VM 인스턴스
apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 2 memory: "4Gi"
다음을 바꿉니다.
MACHINE_SERIES
: 특정 용량 예약에 있는 VM의 머신 유형을 포함하는 머신 시리즈입니다. 예를 들어c3-standard-4
머신 유형을 예약하는 경우MACHINE_SERIES
필드에c3
을(를) 지정합니다.RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.OWNER_PROJECT_ID
: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.
GPU 가속기
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
다음을 바꿉니다.
ACCELERATOR
: Compute Engine 용량 예약에서 예약한 가속기입니다. 다음 값 중 하나여야 합니다.nvidia-gb200
: NVIDIA GB200 (미리보기)nvidia-b200
: NVIDIA B200(180GB)nvidia-h200-141gb
: NVIDIA H200(141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega(80GB)nvidia-h100-80gb
: NVIDIA H100(80GB)nvidia-a100-80gb
: NVIDIA A100(80GB)nvidia-tesla-a100
: NVIDIA A100(40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.OWNER_PROJECT_ID
: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.QUANTITY
: 컨테이너에 연결할 GPU의 수입니다. 지원되는 GPU 수량에 설명된 것처럼 지정된 GPU에 대해 지원되는 수량이어야 합니다.
TPU 가속기
apiVersion: v1 kind: Pod metadata: name: specific-shared-project-pod spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: ACCELERATOR cloud.google.com/gke-tpu-topology: TOPOLOGY cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: google.com/tpu: QUANTITY
다음을 바꿉니다.
ACCELERATOR
: Compute Engine 용량 예약에서 예약한 가속기입니다. 다음 값 중 하나여야 합니다.tpu-v6e-slice
: TPU v6e 슬라이스tpu-v5p-slice
: TPU v5p 슬라이스tpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: TPU v5 lite 기기tpu-v4-lite-device
: TPU v4 lite 기기tpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: TPU v3 기기tpu-v3-slice
: TPU v3 podslice
TOPOLOGY
: TPU 토폴로지입니다.RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.OWNER_PROJECT_ID
: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.QUANTITY
: 컨테이너에 연결할 TPU 수입니다. TPU 토폴로지와 일치해야 합니다.
포드를 배포합니다.
kubectl apply -f shared-autopilot.yaml
Autopilot은 지정된 예약의 예약된 용량을 사용하여 포드를 배치하도록 새 노드를 프로비저닝합니다.
Autopilot에서 특정 예약 블록 사용
이 섹션에서는 클러스터와 동일한 프로젝트 또는 공유 프로젝트에 있는 특정 예약 용량 블록을 사용하는 방법을 보여줍니다.
이 기능은 특정 가속기에서만 사용할 수 있습니다.
kubectl
을 사용하여 예약 블록을 사용하도록 포드를 구성할 수 있습니다.
다음 매니페스트를
reservation-block-autopilot.yaml
로 저장합니다. 이 매니페스트에는 특정 예약을 사용하는 노드 선택기가 있습니다.로컬 프로젝트
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" cloud.google.com/reservation-blocks: RESERVATION_BLOCKS_NAME containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
다음을 바꿉니다.
ACCELERATOR
: Compute Engine 용량 예약에서 예약한 가속기입니다. 다음 값 중 하나여야 합니다.nvidia-b200
: NVIDIA B200(180GB)nvidia-h200-141gb
: NVIDIA H200(141GB)
RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.RESERVATION_BLOCKS_NAME
: Compute Engine 용량 예약 블록의 이름입니다.QUANTITY
: 컨테이너에 연결할 GPU의 수입니다. 지원되는 GPU 수량에 설명된 것처럼 지정된 GPU에 대해 지원되는 수량이어야 합니다.
다른 프로젝트가 소유한 예약의 경우
spec.nodeSelector
필드에 cloud.google.com/reservation-project: OWNER_PROJECT_ID를 추가합니다.OWNER_PROJECT_ID
를 용량 예약을 소유한 프로젝트의 프로젝트 ID로 바꿉니다.포드를 배포합니다.
kubectl apply -f reservation-block-autopilot.yaml
Autopilot은 지정된 예약 블록의 예약된 용량을 사용하여 포드를 배치하도록 새 노드를 프로비저닝합니다.
Autopilot에서 특정 예약 하위 블록 사용
이 섹션에서는 클러스터와 동일한 프로젝트 또는 공유 프로젝트에 있는 특정 용량 예약 하위 블록을 사용하는 방법을 보여줍니다.
다음 ComputeClass 매니페스트를
reservation-sub-block-computeclass.yaml
로 저장합니다.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: specific-reservation-subblock spec: nodePoolAutoCreation: enabled: true priorities: - gpu: type: ACCELERATOR_TYPE count: ACCELERATOR_COUNT reservations: affinity: Specific specific: - name: RESERVATION_NAME project: RESERVATION_PROJECT_ID reservationBlock: name: RESERVATION_BLOCK_NAME reservationSubBlock: name: RESERVATION_SUB_BLOCK_NAME
다음을 바꿉니다.
ACCELERATOR_TYPE
: Compute Engine 용량 예약에서 예약한 가속기입니다. 값은nvidia-gb200
이어야 합니다.ACCELERATOR_COUNT
: 각 노드에 연결할 가속기 수입니다. 이 값은 지정된 가속기 유형에서 지원되는 수량이어야 합니다. 자세한 내용은 지원되는 GPU 수량을 참조하세요.RESERVATION_NAME
: Compute Engine 용량 예약의 이름입니다.RESERVATION_PROJECT_ID
: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.RESERVATION_BLOCK_NAME
: Compute Engine 용량 예약 블록의 이름입니다.RESERVATION_SUB_BLOCK_NAME
: Compute Engine 용량 예약 하위 블록의 이름입니다.
다음 포드 매니페스트를
reservation-sub-block-pod.yaml
로 저장합니다.apiVersion: v1 kind: Pod metadata: name: reservation-sub-block-pod spec: nodeSelector: cloud.google.com/compute-class: specific-reservation-subblock containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: CONTAINER_GPU_COUNT
CONTAINER_GPU_COUNT
를 컨테이너에 할당할 GPU 수로 바꿉니다. 이 값은 컴퓨팅 클래스가 각 노드에 연결하는 가속기 수보다 작거나 같아야 합니다.포드를 배포합니다.
kubectl apply -f reservation-sub-block-pod.yaml
Autopilot은 지정된 예약 하위 블록의 예약된 용량을 사용하여 포드를 실행하도록 새 노드를 프로비저닝합니다.
Autopilot에서 예약 사용 문제 해결
- 머신 유형, 가속기 유형, 로컬 SSD 구성, 가속기 수량이 워크로드에서 사용하는 것과 일치하는지 확인합니다. 일치해야 하는 속성의 전체 목록은 Compute Engine 용량 예약 속성을 참조하세요.
- 예약이 특정 어피니티로 생성되었는지 확인합니다.
- 공유 예약을 사용할 때는 소비자 프로젝트의 GKE 서비스 에이전트에 소유자 프로젝트의 공유 예약을 나열할 권한이 있는지 확인합니다.
GKE Standard에서 예약된 인스턴스 사용
클러스터 또는 노드 풀을 만들 때 --reservation-affinity
플래그를 지정하여 예약 사용 모드를 표시할 수 있습니다.
일치하는 예약 사용
gcloud CLI 또는 Terraform을 사용하여 예약 및 인스턴스를 생성하여 예약을 사용할 수 있습니다.
gcloud
일치하는 예약을 자동으로 사용하려면 예약 어피니티 플래그를 --reservation-affinity=any
로 설정합니다. Compute Engine에 정의된 기본값이 any
이므로 예약 어피니티 플래그를 완전히 생략할 수 있습니다.
any
예약 사용 모드에서는 공유 예약이 다른 프로젝트에 더 많이 제공되기 때문에 공유 예약 전에 먼저 모든 단일 프로젝트 예약의 용량이 노드에 사용됩니다. 인스턴스가 자동으로 사용되는 방법에 대한 자세한 내용은 사용 순서를 참조하세요.
VM 인스턴스 3개에 대한 예약을 생성합니다.
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3
다음을 바꿉니다.
RESERVATION_NAME
: 생성할 예약의 이름MACHINE_TYPE
: 예약에 사용할 머신 유형(이름만 해당)입니다. 예를 들면n1-standard-2
입니다.
예약이 생성되었는지 확인:
gcloud compute reservations describe RESERVATION_NAME
노드가 1개인 클러스터를 만들어 일치하는 예약을 어느 것이든 사용합니다.
gcloud container clusters create CLUSTER_NAME \ --machine-type=MACHINE_TYPE --num-nodes=1 \ --reservation-affinity=any
CLUSTER_NAME
을 만들 클러스터의 이름으로 바꿉니다.노드 3개가 있는 노드 풀을 만들어 일치하는 예약을 사용합니다.
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME --num-nodes=3 \ --machine-type=MACHINE_TYPE --reservation-affinity=any
NODEPOOL_NAME
을 만들 노드 풀의 이름으로 바꿉니다.
총 노드 수는 4개이며, 이는 예약 용량을 초과합니다. 마지막 노드가 일반 Compute Engine 리소스 풀에서 용량을 가져오는 동안 노드 중 3개가 예약을 사용합니다.
Terraform
Terraform을 사용하여 3개의 VM 인스턴스 예약을 생성하려면 다음 예시를 참조하세요.
Terraform을 사용하여 일치하는 예약을 모두 사용할 노드가 하나 있는 클러스터를 만들려면 다음 예시를 참조하세요.
Terraform을 사용하여 일치하는 예약을 사용할 노드 3개가 있는 노드 풀을 만들려면 다음 예시를 참조하세요.
Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.
특정 단일 프로젝트 예약 사용
특정 예약을 사용하려면 예약 어피니티 플래그를 --reservation-affinity=specific
으로 설정하고 특정 예약 이름을 지정합니다. 이 모드에서 인스턴스는 영역의 지정된 예약에서 용량을 가져와야 합니다. 예약에 충분한 용량이 없으면 요청이 실패합니다.
예약을 만들고 특정 예약을 사용할 인스턴스를 만들려면 다음 단계를 수행합니다. gcloud CLI 또는 Terraform을 사용할 수 있습니다.
gcloud
VM 인스턴스 3개에 대한 특정 예약을 생성합니다.
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3 \ --require-specific-reservation
다음을 바꿉니다.
RESERVATION_NAME
: 생성할 예약의 이름MACHINE_TYPE
: 예약에 사용할 머신 유형(이름만 해당)입니다. 예를 들면n1-standard-2
입니다.
특정 단일 프로젝트 예약을 사용할 노드가 1개인 노드 풀을 만듭니다.
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --machine-type=MACHINE_TYPE --num-nodes=1 \ --reservation-affinity=specific --reservation=RESERVATION_NAME
다음을 바꿉니다.
NODEPOOL_NAME
: 만들 노드 풀의 이름입니다.CLUSTER_NAME
: 생성한 클러스터의 이름입니다.
Terraform
Terraform을 사용하여 특정 예약을 만들려면 다음 예시를 참고하세요.
Terraform을 사용하여 특정 단일 프로젝트 예약을 사용할 노드가 하나 있는 노드 풀을 만들려면 다음 예시를 참고하세요.
Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.
특정 공유 예약 사용
특정 공유 예약을 만들고 공유 예약을 사용하려면 다음 단계를 수행합니다. gcloud CLI 또는 Terraform을 사용할 수 있습니다.
- 공유 예약 만들기 및 수정에서 프로젝트 허용 및 제한의 단계를 수행합니다.
gcloud
특정 공유 예약을 만듭니다.
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3 \ --zone=ZONE \ --require-specific-reservation \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --share-with=CONSUMER_PROJECT_IDS
다음을 바꿉니다.
RESERVATION_NAME
: 만들려는 예약 이름입니다.MACHINE_TYPE
: 예약에 사용할 머신 유형의 이름입니다. 예를 들면n1-standard-2
입니다.OWNER_PROJECT_ID
: 이 공유 예약을 만들려는 프로젝트의 프로젝트 ID입니다.--project
플래그를 생략하면 GKE에서 현재 프로젝트가 기본적으로 소유자 프로젝트로 사용됩니다.CONSUMER_PROJECT_IDS
: 이 예약을 공유할 프로젝트의 쉼표로 구분된 프로젝트 ID 목록입니다. 예를 들면project-1,project-2
입니다. 소비자 프로젝트를 1~100개 포함할 수 있습니다. 이러한 프로젝트는 소유자 프로젝트와 동일한 조직에 있어야 합니다.OWNER_PROJECT_ID
는 기본적으로 이 예약을 사용할 수 있으므로 포함하지 마세요.
공유 예약을 사용합니다.
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --machine-type=MACHINE_TYPE --num-nodes=1 \ --reservation-affinity=specific \ --reservation=projects/OWNER_PROJECT_ID/reservations/RESERVATION_NAME
다음을 바꿉니다.
NODEPOOL_NAME
: 만들 노드 풀의 이름입니다.CLUSTER_NAME
: 생성한 클러스터의 이름입니다.
Terraform
Terraform을 사용하여 특정 공유 예약을 만들려면 다음 예시를 참고하세요.
Terraform을 사용하여 특정 공유 예약을 사용하려면 다음 예시를 참고하세요.
Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.
특정 예약에서 사용 시 추가 고려사항
클러스터 생성 중에 특정 예약 어피니티를 사용하여 생성된 노드 풀(기본 노드 풀 포함)은 노드 풀의 전체 기간 동안 특정 예약의 용량으로 크기가 제한됩니다. 이는 다음과 같은 GKE 기능에 영향을 줍니다.
- 여러 영역이 있는 클러스터: 영역 클러스터 또는 멀티 영역 클러스터에서 노드 풀의 노드는 여러 영역에 걸쳐 있을 수 있습니다. 예약은 단일 영역에 국한되므로 여러 예약이 필요합니다. 이러한 클러스터에서 특정 예약을 사용하는 노드 풀을 만들려면 노드 풀의 각 영역에서 이름과 머신 속성이 똑같은 예약을 만들어야 합니다.
- 클러스터 자동 확장 및 노드 풀 업그레이드: 특정 예약에 추가 용량이 없는 경우 두 작업 모두 추가 인스턴스를 만들어야 하므로 노드 풀 업그레이드 또는 노드 풀 자동 확장이 실패할 수 있습니다. 이 문제를 해결하려면 예약 크기를 변경하거나 제한된 리소스 중 일부를 확보하면 됩니다.
GPU 예약 사용
GPU 예약을 사용하거나 용량이 단일 영역에 있는 예약을 사용하는 Standard 노드 풀을 만들려면 노드 풀을 추가할 때 --node-locations
플래그를 지정해야 합니다. 리전 Standard 클러스터 또는 멀티 영역 Standard 클러스터를 만들 때 노드 위치를 지정하면 GKE에서 GPU 용량을 예약한 영역에만 노드를 만듭니다.
GPU를 사용하는 노드 풀을 만드는 방법에 관한 자세한 내용은 GPU 노드 풀 만들기를 참조하세요.
TPU 예약 사용
TPU 예약을 사용하는 Standard 노드 풀을 만들려면 노드 풀을 추가할 때 --node-locations
플래그를 지정해야 합니다. 리전 Standard 클러스터 또는 멀티 영역 Standard 클러스터를 만들 때 노드 위치를 지정하면 GKE가 TPU 용량을 예약한 영역에만 노드를 만듭니다.
TPU 예약은 다른 머신 유형과 다릅니다. 다음은 TPU 예약을 만들 때 고려해야 하는 TPU 관련 측면입니다.
- GKE에서 TPU를 사용할 때
--reservation-affinity
플래그에 지원되는 유일한 값은SPECIFIC
입니다.
TPU를 사용하는 노드 풀을 만드는 방법에 관한 자세한 안내는 TPU 노드 풀 만들기를 참조하세요.
예약을 사용하지 않고 노드 만들기
예약에서 리소스를 사용하지 않도록 명시적으로 지정하려면 어피니티를 --reservation-affinity=none
으로 설정합니다.
예약을 사용하지 않는 클러스터를 만듭니다.
gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
CLUSTER_NAME
을 만들 클러스터의 이름으로 바꿉니다.예약을 사용하지 않는 노드 풀을 만듭니다.
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --reservation-affinity=none
NODEPOOL_NAME
을 만들 노드 풀의 이름으로 바꿉니다.
영역 간에 사용 가능한 예약 팔로잉
서로 다른 예약을 갖는 여러 영역에서 실행되는 노드 풀을 사용하는 경우 --location_policy=ANY
플래그를 사용할 수 있습니다. 이렇게 하면 클러스터에 새 노드가 추가될 때 아직 사용되지 않은 예약이 있는 영역에 노드가 생성됩니다.
삭제
이 페이지에서 사용한 리소스 비용이 Cloud Billing 계정에 청구되지 않게 하려면 다음 안내를 따르세요.
각 클러스터에 다음 명령어를 실행하여 생성한 클러스터를 삭제합니다.
gcloud container clusters delete CLUSTER_NAME
각 예약에 다음 명령어를 실행하여 생성한 예약을 삭제합니다.
gcloud compute reservations delete RESERVATION_NAME