예약된 영역 리소스 사용


특정 영역의 Compute Engine 인스턴스를 예약하여 필요할 때 워크로드에 리소스를 사용할 수 있습니다. 예약 관리 방법에 대한 자세한 내용은 Compute Engine 영역별 리소스 예약을 참조하세요.

예약한 후 GKE에서 예약된 리소스를 사용할 수 있습니다. GKE는 Compute Engine과 동일한 사용 모드를 지원합니다.

  • 모든 예약의 리소스 사용: Standard 모드만 해당
  • 특정 예약의 리소스 사용: Standard 및 Autopilot
  • 예약을 사용하지 않고 노드 만들기: Standard 및 Autopilot

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

Autopilot 클러스터에서 예약한 용량 사용

Autopilot 클러스터는 동일한 프로젝트 또는 공유 프로젝트에서 Compute Engine 용량 예약의 리소스 사용을 지원합니다. 대상 예약의 소비 유형 속성을 특정으로 설정하고 매니페스트에서 해당 예약을 명시적으로 선택해야 합니다. 예약을 명시적으로 지정하지 않으면 Autopilot 클러스터는 예약을 사용하지 않습니다. 예약 소비 유형에 대한 자세한 내용은 예약의 작동 원리를 참조하세요.

이러한 예약은 Compute 가변형 약정 사용 할인 대상이 됩니다. 예약 용량을 사용하려면 Accelerator 컴퓨팅 클래스 또는 Performance 컴퓨팅 클래스를 사용해야 합니다.

  • 시작하기에 앞서 다음 버전을 실행하는 Autopilot 클러스터를 만듭니다.

    • 가속기 컴퓨팅 클래스를 사용하여 예약된 가속기 사용하려면 1.28.6-gke.1095000 이상이 필요합니다.
    • 성능 컴퓨팅 클래스를 사용하려면 1.28.6-gke.1369000 이상 또는 1.29.1-gke.1575000 버전 이상이어야 합니다.

Autopilot 용량 예약

Autopilot 포드는 클러스터와 동일한 프로젝트 또는 다른 프로젝트에서 공유된 예약의 특정 소비 유형 속성이 있는 예약을 사용할 수 있습니다. 매니페스트에서 예약을 명시적으로 참조하여 예약된 하드웨어를 사용할 수 있습니다. Autopilot에서 다음 유형의 하드웨어에 대해 예약을 사용할 수 있습니다.

  • 다음 유형의 GPU:
    • nvidia-h100-80gb: NVIDIA H100(80GB)(가속기 컴퓨팅 클래스에서만 사용 가능)
    • nvidia-a100-80gb: NVIDIA A100(80GB)
    • nvidia-tesla-a100: NVIDIA A100(40GB)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4

용량을 예약하려면 다음 리소스를 참조하세요. 예약은 다음 요구사항을 충족해야 합니다.

  • 머신 유형, 가속기 유형, 가속기 수량이 워크로드에서 사용하는 것과 일치합니다.
  • 예약은 특정 소비 유형을 사용합니다. 예를 들어 gcloud CLI에서 예약을 만들 때 --require-specific-reservation 플래그를 지정해야 합니다.

  • 단일 프로젝트에 대한 예약 만들기

  • 공유 예약 만들기

Autopilot 클러스터의 동일한 프로젝트에서 특정 예약 사용

이 섹션에서는 클러스터와 동일한 프로젝트에 있는 특정 예약 용량을 사용하는 방법을 보여줍니다. kubectl 또는 Terraform을 사용할 수 있습니다.

kubectl

  1. 다음 매니페스트를 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: 12
              memory: "50Gi"
              ephemeral-storage: "200Gi"
    

    다음을 바꿉니다.

    • MACHINE_SERIES: 특정 용량 예약에 있는 VM의 머신 유형을 포함하는 머신 시리즈입니다. 예를 들어 c3-standard-4 머신 유형을 예약하는 경우 MACHINE_SERIES 필드에 C3을(를) 지정합니다.
    • RESERVATION_NAME: Compute Engine 용량 예약의 이름

    가속기

      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-h100-80gb: NVIDIA H100(80GB)(가속기 컴퓨팅 클래스에서만 사용 가능)
      • nvidia-a100-80gb: NVIDIA A100(80GB)
      • nvidia-tesla-a100: NVIDIA A100(40GB)
      • nvidia-l4: NVIDIA L4
      • nvidia-tesla-t4: NVIDIA T4
    • RESERVATION_NAME: Compute Engine 용량 예약의 이름
    • QUANTITY: 컨테이너에 연결할 GPU의 수입니다. 지원되는 GPU 수량에 설명된 것처럼 지정된 GPU에 대해 지원되는 수량이어야 합니다.
  2. 포드를 배포합니다.

    kubectl apply -f specific-autopilot.yaml
    

Autopilot은 지정된 예약의 예약된 용량을 사용하여 포드를 배치하도록 새 노드를 프로비저닝합니다.

Terraform

Terraform을 사용하여 VM 인스턴스와 동일한 프로젝트에서 특정 예약을 사용하려면 다음 예시를 참조하세요.

resource "kubernetes_pod_v1" "default_pod" {
  metadata {
    name = "specific-same-project-pod"
  }

  spec {
    node_selector = {
      "cloud.google.com/compute-class"        = "Performance"
      "cloud.google.com/machine-family"       = "c3"
      "cloud.google.com/reservation-name"     = google_compute_reservation.specific_pod.name
      "cloud.google.com/reservation-affinity" = "specific"
    }

    container {
      name  = "my-container"
      image = "registry.k8s.io/pause"

      resources {
        requests = {
          cpu               = 2
          memory            = "8Gi"
          ephemeral-storage = "1Gi"
        }
      }

      security_context {
        allow_privilege_escalation = false
        run_as_non_root            = false

        capabilities {
          add  = []
          drop = ["NET_RAW"]
        }
      }
    }

    security_context {
      run_as_non_root     = false
      supplemental_groups = []

      seccomp_profile {
        type = "RuntimeDefault"
      }
    }
  }

  depends_on = [
    google_compute_reservation.specific_pod
  ]
}

Terraform을 사용하여 가속기 컴퓨팅 클래스가 있는 동일한 프로젝트에서 특정 예약을 사용하려면 다음 예시를 참조하세요.

resource "kubernetes_pod_v1" "default_accelerator" {
  metadata {
    name = "specific-same-project-accelerator"
  }

  spec {
    node_selector = {
      "cloud.google.com/compute-class"        = "Accelerator"
      "cloud.google.com/gke-accelerator"      = "nvidia-l4"
      "cloud.google.com/reservation-name"     = google_compute_reservation.specific_accelerator.name
      "cloud.google.com/reservation-affinity" = "specific"
    }

    container {
      name  = "my-container"
      image = "registry.k8s.io/pause"

      resources {
        requests = {
          cpu               = 2
          memory            = "7Gi"
          ephemeral-storage = "1Gi"
          "nvidia.com/gpu"  = 1

        }
        limits = {
          "nvidia.com/gpu" = 1
        }
      }

      security_context {
        allow_privilege_escalation = false
        run_as_non_root            = false

        capabilities {
          add  = []
          drop = ["NET_RAW"]
        }
      }
    }

    security_context {
      run_as_non_root     = false
      supplemental_groups = []

      seccomp_profile {
        type = "RuntimeDefault"
      }
    }
  }

  depends_on = [
    google_compute_reservation.specific_accelerator
  ]
}

Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

Autopilot에서 특정 공유 예약 사용

이 섹션에서는 다음 용어가 사용됩니다.

  • 소유자 프로젝트: 예약을 소유하고 다른 프로젝트와 공유하는 프로젝트입니다.
  • 소비자 프로젝트: 공유 예약을 사용하는 워크로드를 실행하는 프로젝트입니다.

공유 예약을 사용하려면 GKE 서비스 에이전트에 예약 소유자 프로젝트의 예약에 대한 액세스 권한을 부여해야 합니다. 다음 단계를 따르세요.

  1. 소유자 프로젝트에서 compute.reservations.list 권한이 포함된 커스텀 IAM 역할을 만듭니다.

    gcloud iam roles create ROLE_NAME \
        --project=OWNER_PROJECT_ID \
        --permissions='compute.reservations.list'
    

    다음을 바꿉니다.

    • ROLE_NAME: 새 역할의 이름입니다.
    • OWNER_PROJECT_ID: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.
  2. 소유자 프로젝트의 공유 예약을 나열할 수 있는 액세스 권한을 소비자 프로젝트의 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 문서의 프로젝트 식별을 참조하세요.

  3. 다음 매니페스트를 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: 12
            memory: "50Gi"
            ephemeral-storage: "200Gi"
    

    다음을 바꿉니다.

    • MACHINE_SERIES: 특정 용량 예약에 있는 VM의 머신 유형을 포함하는 머신 시리즈입니다. 예를 들어 c3-standard-4 머신 유형을 예약하는 경우 MACHINE_SERIES 필드에 C3을(를) 지정합니다.
    • RESERVATION_NAME: Compute Engine 용량 예약의 이름입니다.
    • OWNER_PROJECT_ID: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.

    가속기

    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-h100-80gb: NVIDIA H100(80GB)(가속기 컴퓨팅 클래스에서만 사용 가능)
      • nvidia-a100-80gb: NVIDIA A100(80GB)
      • nvidia-tesla-a100: NVIDIA A100(40GB)
      • nvidia-l4: NVIDIA L4
      • nvidia-tesla-t4: NVIDIA T4
    • RESERVATION_NAME: Compute Engine 용량 예약의 이름입니다.
    • OWNER_PROJECT_ID: 용량 예약을 소유한 프로젝트의 프로젝트 ID입니다.
    • QUANTITY: 컨테이너에 연결할 GPU의 수입니다. 지원되는 GPU 수량에 설명된 것처럼 지정된 GPU에 대해 지원되는 수량이어야 합니다.
  4. 포드를 배포합니다.

    kubectl apply -f shared-autopilot.yaml
    

Autopilot은 지정된 예약의 예약된 용량을 사용하여 포드를 배치하도록 새 노드를 프로비저닝합니다.

Autopilot에서 예약 사용 문제 해결

  • 머신 유형, 가속기 유형, 로컬 SSD 구성, 가속기 수량이 워크로드에서 사용하는 것과 일치하는지 확인합니다. 일치해야 하는 속성의 전체 목록은 Compute Engine 용량 예약 속성을 참조하세요.
  • 예약이 특정 어피니티로 생성되었는지 확인합니다.
  • 공유 예약을 사용할 때는 소비자 프로젝트의 GKE 서비스 에이전트에 소유자 프로젝트의 공유 예약을 나열할 권한이 있는지 확인합니다.

GKE Standard에서 예약된 인스턴스 사용

클러스터 또는 노드 풀을 만들 때 --reservation-affinity 플래그를 지정하여 예약 사용 모드를 표시할 수 있습니다.

일치하는 예약 사용

gcloud CLI 또는 Terraform을 사용하여 예약 및 인스턴스를 생성하여 예약을 사용할 수 있습니다.

gcloud

일치하는 예약을 자동으로 사용하려면 예약 어피니티 플래그를 --reservation-affinity=any로 설정합니다. Compute Engine에 정의된 기본값이 any이므로 예약 어피니티 플래그를 완전히 생략할 수 있습니다.

any 예약 사용 모드에서는 공유 예약이 다른 프로젝트에 더 많이 제공되기 때문에 공유 예약 전에 먼저 모든 단일 프로젝트 예약의 용량이 노드에 사용됩니다. 인스턴스가 자동으로 사용되는 방법에 대한 자세한 내용은 사용 순서를 참조하세요.

  1. VM 인스턴스 3개에 대한 예약을 생성합니다.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3
    

    다음을 바꿉니다.

    • RESERVATION_NAME: 생성할 예약의 이름
    • MACHINE_TYPE: 예약에 사용할 머신 유형(이름만 해당)입니다. 예를 들면 n1-standard-2입니다.
  2. 예약이 생성되었는지 확인:

    gcloud compute reservations describe RESERVATION_NAME
    
  3. 노드가 1개인 클러스터를 만들어 일치하는 예약을 어느 것이든 사용합니다.

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=any
    

    CLUSTER_NAME을 만들 클러스터의 이름으로 바꿉니다.

  4. 노드 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 인스턴스 예약을 생성하려면 다음 예시를 참조하세요.

resource "google_compute_reservation" "any_reservation" {
  name = "any-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 3

    instance_properties {
      machine_type = "e2-medium"
    }
  }
}

Terraform을 사용하여 일치하는 예약을 모두 사용할 노드가 하나 있는 클러스터를 만들려면 다음 예시를 참조하세요.

resource "google_container_cluster" "default" {
  name     = "gke-standard-zonal-cluster"
  location = "us-central1-a"

  initial_node_count = 1

  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "ANY_RESERVATION"
    }
  }

  depends_on = [
    google_compute_reservation.any_reservation
  ]

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Terraform을 사용하여 일치하는 예약을 사용할 노드 3개가 있는 노드 풀을 만들려면 다음 예시를 참조하세요.

resource "google_container_node_pool" "any_node_pool" {
  name     = "gke-standard-zonal-any-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 3
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "ANY_RESERVATION"
    }
  }
}

Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

특정 단일 프로젝트 예약 사용

특정 예약을 사용하려면 예약 어피니티 플래그를 --reservation-affinity=specific으로 설정하고 특정 예약 이름을 지정합니다. 이 모드에서 인스턴스는 영역의 지정된 예약에서 용량을 가져와야 합니다. 예약에 충분한 용량이 없으면 요청이 실패합니다.

예약을 만들고 특정 예약을 사용할 인스턴스를 만들려면 다음 단계를 수행합니다. gcloud CLI 또는 Terraform을 사용할 수 있습니다.

gcloud

  1. 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입니다.
  2. 특정 단일 프로젝트 예약을 사용하도록 단일 노드가 있는 노드 풀을 만듭니다.

    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을 사용하여 특정 예약을 만들려면 다음 예시를 참조하세요.

resource "google_compute_reservation" "specific_reservation" {
  name = "specific-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 1

    instance_properties {
      machine_type = "e2-medium"
    }
  }

  specific_reservation_required = true
}

Terraform을 사용하여 특정 단일 프로젝트 예약을 사용하도록 단일 노드가 있는 노드 풀을 만들려면 다음 예시를 참조하세요.

resource "google_container_node_pool" "specific_node_pool" {
  name     = "gke-standard-zonal-specific-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 1
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "SPECIFIC_RESERVATION"
      key                      = "compute.googleapis.com/reservation-name"
      values                   = [google_compute_reservation.specific_reservation.name]
    }
  }

  depends_on = [
    google_compute_reservation.specific_reservation
  ]
}

Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

특정 공유 예약 사용

특정 공유 예약을 만들고 공유 예약을 사용하려면 다음 단계를 수행합니다. gcloud CLI 또는 Terraform을 사용할 수 있습니다.

  1. 공유 예약 만들기 및 수정에서 프로젝트 허용 및 제한의 단계를 수행합니다.

gcloud

  1. 특정 공유 예약을 만듭니다.

    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는 기본적으로 이 예약을 사용할 수 있으므로 포함하지 마세요.
  2. 공유 예약을 사용합니다.

      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을 사용하여 특정 공유 예약을 만들려면 다음 예시를 참조하세요.

resource "google_compute_reservation" "specific_reservation" {
  name = "specific-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 1

    instance_properties {
      machine_type = "e2-medium"
    }
  }

  specific_reservation_required = true
}

Terraform을 사용하여 특정 공유 예약을 사용하려면 다음 예시를 참조하세요.

resource "google_container_node_pool" "specific_node_pool" {
  name     = "gke-standard-zonal-specific-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 1
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "SPECIFIC_RESERVATION"
      key                      = "compute.googleapis.com/reservation-name"
      values                   = [google_compute_reservation.specific_reservation.name]
    }
  }

  depends_on = [
    google_compute_reservation.specific_reservation
  ]
}

Terraform 사용에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참조하세요.

특정 예약에서 사용 시 추가 고려사항

클러스터 생성 중에 특정 예약 어피니티를 사용하여 생성된 노드 풀(기본 노드 풀 포함)은 노드 풀의 전체 기간 동안 특정 예약의 용량으로 크기가 제한됩니다. 이는 다음과 같은 GKE 기능에 영향을 줍니다.

  • 여러 영역이 있는 클러스터: 영역 클러스터 또는 멀티 영역 클러스터에서 노드 풀의 노드는 여러 영역에 걸쳐 있을 수 있습니다. 예약은 단일 영역에 국한되므로 여러 예약이 필요합니다. 이러한 클러스터에서 특정 예약을 사용하는 노드 풀을 만들려면 노드 풀의 각 영역에서 이름과 머신 속성이 똑같은 예약을 만들어야 합니다.
  • 클러스터 자동 확장 및 노드 풀 업그레이드: 특정 예약에 추가 용량이 없는 경우 두 작업 모두 추가 인스턴스를 만들어야 하므로 노드 풀 업그레이드 또는 노드 풀 자동 확장이 실패할 수 있습니다. 이 문제를 해결하려면 예약 크기를 변경하거나 제한된 리소스 중 일부를 확보하면 됩니다.

예약을 사용하지 않고 노드 만들기

예약에서 리소스를 사용하지 않도록 명시적으로 지정하려면 어피니티를 --reservation-affinity=none으로 설정합니다.

  1. 예약을 사용하지 않는 클러스터를 만듭니다.

    gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
    

    CLUSTER_NAME을 만들 클러스터의 이름으로 바꿉니다.

  2. 예약을 사용하지 않는 노드 풀을 만듭니다.

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME \
        --reservation-affinity=none
    

    NODEPOOL_NAME을 만들 노드 풀의 이름으로 바꿉니다.

영역 간에 사용 가능한 예약 팔로잉

서로 다른 예약을 갖는 여러 영역에서 실행되는 노드 풀을 사용하는 경우 --location_policy=ANY 플래그를 사용할 수 있습니다. 이렇게 하면 클러스터에 새 노드가 추가될 때 아직 사용되지 않은 예약이 있는 영역에 노드가 생성됩니다.

TPU 예약

TPU 예약은 다른 머신 유형과 다릅니다. 다음은 TPU 예약을 만들 때 고려해야 하는 TPU 관련 측면입니다.

  • GKE의 TPU를 사용할 때 gcloud container node-pools create--reservation-affinity 플래그에 지원되는 유일한 값은 SPECIFIC입니다.
  • TPU 예약은 프로젝트 간에 공유할 수 없습니다.

자세한 내용은 TPU 예약을 참조하세요.

삭제

이 페이지에서 사용한 리소스 비용이 Cloud Billing 계정에 청구되지 않게 하려면 다음 안내를 따르세요.

  1. 각 클러스터에 다음 명령어를 실행하여 생성한 클러스터를 삭제합니다.

    gcloud container clusters delete CLUSTER_NAME
    
  2. 각 예약에 다음 명령어를 실행하여 생성한 예약을 삭제합니다.

    gcloud compute reservations delete RESERVATION_NAME
    

다음 단계