예약 사용 및 관리

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 문서에서는 Compute Engine 영역별 리소스 예약을 사용하고 관리하는 방법을 설명합니다. 예약은 Compute Engine 영역별 리소스의 용량을 확보하는 데 매우 높은 수준의 확신을 제공합니다. 각 예약은 속성이 동일한 하나 이상의 가상 머신(VM) 인스턴스를 보장합니다. 예약에 대한 자세한 내용은 Compute Engine 영역별 리소스 예약을 참조하세요. 예약을 만드는 방법은 단일 프로젝트에 대한 예약 만들기 또는 공유 예약 만들기를 참조하세요.

시작하기 전에

예약된 인스턴스 사용

가상 머신(VM) 인스턴스를 만들 때 인스턴스의 예약 어피니티 속성을 설정하여 인스턴스가 사용 가능한 일치하는 예약을 사용하거나(기본값), 특정 예약을 사용하거나, 예약을 아예 사용하지 않도록 선택할 수 있습니다. 예약 어피니티 속성은 다음과 같이 표시됩니다.

  • Google Cloud 콘솔의 VM 인스턴스와 함께 사용 섹션
  • gcloud CLI의 --reservation-affinity 플래그
  • Compute Engine API의 "reservationAffinity" 필드

어떤 경우든 VM은 VM 및 예약 모두에 대한 다음 속성이 정확하게 일치할 때만 예약을 사용할 수 있습니다.

  • 프로젝트
  • 영역
  • 머신 유형
  • 최소 CPU 플랫폼
  • GPU 유형 및 수량
  • 로컬 SSD 유형 및 수량

인스턴스가 특정 예약을 사용하려면 그 예약이 특정 예약 필요 속성을 적절하게 사용하여 생성되어야 합니다.

자세한 내용은 예약의 작동 원리를 참조하세요.

일치하는 예약에서 인스턴스 사용

이 사용 모델에서는 기존 인스턴스와 새 인스턴스의 속성이 예약 인스턴스의 속성과 일치하면 이러한 인스턴스가 자동으로 예약에 포함됩니다. 이 모델은 많은 수의 VM을 생성하고 삭제하며, 가능할 때마다 예약을 사용하려는 경우에 유용합니다.

이 사용 모델을 사용하는 경우 모든 단일 프로젝트 예약이 공유 예약보다 먼저 사용됩니다. 공유 예약이 더 널리 있기 사용되기 때문입니다. 인스턴스가 자동으로 사용되는 방법에 대한 자세한 내용은 사용 순서를 참조하세요.

이 모델을 사용하려면 예약을 생성할 때 --require-specific-reservation 플래그를 제외하여 일치하는 인스턴스가 이러한 예약을 자동으로 사용할 수 있도록 하세요.

콘솔

  1. 모든 예약을 사용하도록 구성된 예약 어피니티 속성이 있는 VM 인스턴스에서 사용할 수 있는 리소스가 있는 예약을 만듭니다(기본값). 독립형 예약 또는 약정에 연결된 예약을 만들 수 있습니다.

    1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

      약정 사용 할인으로 이동

    2. 다음 옵션 중 하나를 사용하여 예약을 만듭니다.

      • 독립형 예약을 만들려면 예약 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만들려면 약정 구매를 클릭합니다. 다른 옵션을 지정한 후 예약 섹션에서 항목 추가를 클릭합니다. 연결된 예약으로 약정을 구매하는 방법에 대한 자세한 내용은 예약과 약정 사용 할인의 결합을 참조하세요.

    3. 이름 필드에 예약 이름을 입력합니다. 이 예시에서는 reservation-01를 입력합니다.

    4. 리소스를 예약할 리전영역을 선택합니다. 이 예시에서는 us-central1을 리전으로, us-central1-a를 영역으로 선택합니다.

    5. 원하는 공유 유형을 선택합니다.

      • 단일 프로젝트에 대한 예약을 만들려면 로컬을 선택합니다.
      • 여러 프로젝트 간에 공유 예약을 만들려면 공유를 선택합니다. 이 예약을 다른 프로젝트와 공유하려면 프로젝트 추가를 클릭하고 현재 프로젝트의 조직에서 원하는 프로젝트를 선택합니다.
    6. 일치하는 VM 인스턴스에서 이 예약을 자동으로 사용할 수 있도록 VM 인스턴스와 함께 사용에서 예약 자동 사용을 선택합니다.

    7. VM 인스턴스 수 필드에 예약할 VM 인스턴스 수를 입력합니다. 이 예시에서는 2을 입력합니다.

    8. VM 인스턴스마다 예약할 리소스를 지정합니다.

      • 기존 인스턴스 템플릿과 일치하는 VM을 예약하려면 인스턴스 템플릿 사용을 선택하고 목록에서 인스턴스 템플릿을 선택합니다.
      • 또는 머신 유형 지정을 선택하고 다음을 지정합니다.
        1. 머신 계열, 시리즈, 머신 유형 필드에서 머신 계열, 시리즈, 머신 유형을 선택합니다.
        2. 선택사항: 최소 CPU 플랫폼 또는 GPU를 지정합니다.
          1. CPU 플랫폼 및 GPU 섹션을 확장하려면 확장 화살표를 클릭합니다.
          2. 선택사항: 최소 CPU 플랫폼을 지정하려면 CPU 플랫폼 목록에서 옵션을 선택합니다.
          3. 선택사항: GPU를 추가하려면 GPU 추가를 클릭합니다. 그런 다음 GPU 유형 필드와 GPU 수 필드에서 각 VM의 GPU 유형과 수를 선택합니다.
        3. 선택사항: 로컬 SSD를 추가합니다.
          1. 디스크 수 필드에서 각 VM의 로컬 SSD 수를 선택합니다.
          2. 인터페이스 유형 필드에서 로컬 SSD의 인터페이스를 선택합니다.

      이 예시에서는 머신 유형 지정을 선택합니다. 그런 다음 General-purpose 머신 계열 및 N2 시리즈에 대해 n2-standard-32 머신 유형을 선택하고 최소 CPU 플랫폼 Intel Cascade Lake를 선택합니다.

    9. 예약 만들기를 완료합니다.

      • 독립형 예약을 만드는 경우 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만드는 경우 다음 안내를 따르세요.

        1. 이 예약의 속성 지정을 완료하려면 완료를 클릭합니다.
        2. 약정 및 연결된 예약 만들기를 완료하려면 구매를 클릭합니다.
  2. 동일한 프로젝트 또는 예약이 공유된 프로젝트에서 공개 예약을 타겟팅하는 VM 인스턴스를 만듭니다.

    영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 수량 및 유형, 로컬 SSD 인터페이스 및 크기를 포함하여 VM 인스턴스의 속성이 reservation-01의 VM 인스턴스 속성과 일치하는지 확인합니다.

    VM 인스턴스를 만드는 방법에 대한 자세한 내용은 VM 인스턴스 만들기 및 시작을 참조하세요.

    1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

      인스턴스 만들기로 이동

    2. VM의 이름을 지정합니다.

    3. 다음 섹션에서는 선택적인 속성을 포함하여 예약의 모든 속성과 정확하게 일치하는 구성을 선택합니다. 이 예시에서는 다음 VM 인스턴스 속성이 reservation-01과 일치하는지 확인해야 합니다.

      • 리전: us-central1
      • 영역: us-central1-a
      • 머신 유형: n2-standard-32
      • 최소 CPU 플랫폼: Intel Cascade Lake
      • GPU: 없음
      • 로컬 SSD: 없음
    4. 네트워킹, 디스크, 보안, 관리, 단독 테넌시 섹션을 펼치고 관리 섹션을 펼칩니다. 예약 목록에서 생성된 예약 자동 사용을 선택합니다.

    5. 만들기를 클릭하여 VM을 만듭니다.

gcloud

  1. reservation-01 공개 예약을 생성합니다.

    gcloud compute reservations create reservation-01 \
        --vm-count=2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a
    
  2. 모든 공개 예약을 타겟팅하고 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 크기 및 인터페이스를 비롯한 reservation-01의 인스턴스 속성과 일치하는 VM 인스턴스를 만듭니다.

    gcloud compute instances create instance-1 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform="Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=any
    

API

  1. reservation-01 공개 예약을 생성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-01",
      "specificReservation":{
        "count":"2",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": false
    }
    
  2. 모든 공개 예약을 타겟팅하고 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 크기 및 인터페이스를 비롯한 reservation-01의 인스턴스 속성과 일치하는 VM 인스턴스를 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-1",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "ANY_RESERVATION"
      },
      ...
    }
    

특정 예약에서 인스턴스 사용

이 사용 모델에서는 이름으로 특정 예약을 타겟팅하는 새로운 인스턴스만 해당 예약을 사용하며 예약은 자동으로 사용되지 않습니다. 이 모델은 일정한 용량을 특정 이벤트의 백업으로 유지하려는 경우에 유용합니다.

예약을 생성할 때 다음 방법 중 하나를 사용하여 인스턴스가 특정 예약을 타겟팅하도록 지정합니다.

  • Google Cloud 콘솔에서 특정 예약 선택 체크박스를 선택합니다.
  • gcloud CLI에 --require-specific-reservation 플래그를 포함합니다.
  • Compute Engine API에서 specificReservationRequired 필드를 true로 설정합니다.

그런 다음 해당 예약을 명시적으로 타겟팅하고 예약의 속성과 일치하는 VM을 생성합니다.

인스턴스 템플릿을 사용해 리전 관리형 인스턴스 그룹에서 VM을 만들려면 해당 영역별로 이름이 같은 동일한 예약을 생성합니다. 그런 다음 그룹의 인스턴스 템플릿에서 이름으로 예약을 타겟팅합니다.

예를 들어 reservation-02라는 특정 예약을 생성한 다음 해당 예약을 타겟팅하고 예약의 인스턴스 속성과 일치하는 인스턴스를 만듭니다.

사용할 인스턴스 유형에 따라 특정 단일 프로젝트 예약 사용 또는 특정 공유 예약 사용 단계를 따릅니다.

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

특정 단일 프로젝트 예약을 사용하려면 Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용합니다.

콘솔

  1. 예약을 생성하고 이름으로 이 예약을 명시적으로 타겟팅하는 VM 인스턴스에서만 이 예약의 리소스를 사용할 수 있도록 합니다. 독립형 예약 또는 약정에 연결된 예약을 만들 수 있습니다.

    1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

      약정 사용 할인으로 이동

    2. 다음 옵션 중 하나를 사용하여 예약을 만듭니다.

      • 독립형 예약을 만들려면 예약 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만들려면 약정 구매를 클릭합니다. 다른 옵션을 지정한 후 예약 섹션에서 항목 추가를 클릭합니다. 연결된 예약으로 약정을 구매하는 방법에 대한 자세한 내용은 예약과 약정 사용 할인의 결합을 참조하세요.

    3. 이름 필드에 예약 이름을 입력합니다. 이 예시에서는 reservation-02를 입력합니다.

    4. 리소스를 예약할 리전영역을 선택합니다. 이 예시에서는 us-central1을 리전으로, us-central1-a를 영역으로 선택합니다.

    5. 예약이 단일 프로젝트 예약임을 지정하려면 공유 유형로컬을 선택합니다.

    6. 이름을 통해 이 예약을 명시적으로 타겟팅하는 일치하는 VM 인스턴스만 이 예약을 사용할 수 있도록 하려면 VM 인스턴스와 함께 사용에서 특정 예약 선택을 선택합니다.

    7. VM 인스턴스 수 필드에 예약할 VM 인스턴스 수를 입력합니다. 이 예시에서는 10을 입력합니다.

    8. VM 인스턴스마다 예약할 리소스를 지정합니다.

      • 기존 인스턴스 템플릿과 일치하는 VM을 예약하려면 인스턴스 템플릿 사용을 선택하고 목록에서 인스턴스 템플릿을 선택합니다.
      • 또는 머신 유형 지정을 선택하고 다음을 지정합니다.
        1. 머신 계열, 시리즈, 머신 유형 필드에서 머신 계열, 시리즈, 머신 유형을 선택합니다.
        2. 선택사항: 최소 CPU 플랫폼 또는 GPU를 지정합니다.
          1. CPU 플랫폼 및 GPU 섹션을 확장하려면 확장 화살표를 클릭합니다.
          2. 선택사항: 최소 CPU 플랫폼을 지정하려면 CPU 플랫폼 목록에서 옵션을 선택합니다.
          3. 선택사항: GPU를 추가하려면 GPU 추가를 클릭합니다. 그런 다음 GPU 유형 필드와 GPU 수 필드에서 각 VM의 GPU 유형과 수를 선택합니다.
        3. 선택사항: 로컬 SSD를 추가합니다.
          1. 디스크 수 필드에서 각 VM의 로컬 SSD 수를 선택합니다.
          2. 인터페이스 유형 필드에서 로컬 SSD의 인터페이스를 선택합니다.

      이 예시에서는 머신 유형 지정을 선택합니다. 그런 다음 General-purpose 머신 계열 및 N2 시리즈에 대해 n2-standard-32 머신 유형을 선택하고 최소 CPU 플랫폼 Intel Cascade Lake를 선택합니다.

    9. 예약 만들기를 완료합니다.

      • 독립형 예약을 만드는 경우 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만드는 경우 다음 안내를 따르세요.

        1. 이 예약의 속성 지정을 완료하려면 완료를 클릭합니다.
        2. 약정 및 연결된 예약 만들기를 완료하려면 구매를 클릭합니다.
  2. 동일한 프로젝트에서 이름으로 특정 예약을 타겟팅하는 VM 인스턴스를 만듭니다.

    영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 수량 및 유형, 로컬 SSD 인터페이스 및 크기를 포함하여 VM 인스턴스의 속성이 특정 예약의 VM 인스턴스 속성과 일치하는지 확인합니다.

    VM 인스턴스를 만드는 방법에 대한 자세한 내용은 VM 인스턴스 만들기 및 시작을 참조하세요.

    1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

      인스턴스 만들기로 이동

    2. VM의 이름을 지정합니다.

    3. 다음 섹션에서는 선택적인 속성을 포함하여 예약의 모든 속성과 정확하게 일치하는 구성을 선택합니다. 이 예시에서는 다음 VM 인스턴스 속성이 reservation-02과 일치하는지 확인해야 합니다.

      • 리전: us-central1
      • 영역: us-central1-a
      • 머신 유형: n2-standard-32
      • 최소 CPU 플랫폼: Intel Cascade Lake
      • GPU: 없음
      • 로컬 SSD: 없음
    4. 네트워킹, 디스크, 보안, 관리, 단독 테넌시 섹션을 펼치고 관리 섹션을 펼칩니다. 예약 목록에서 특정 예약 선택을 선택한 후 인스턴스에 사용하려는 것과 속성이 일치하는 예약 이름을 선택합니다. 이 예시에서는 reservation-02를 선택합니다.

    5. 만들기를 클릭하여 VM을 만듭니다.

gcloud

  1. --require-specific-reservation 플래그로 reservation-02라는 예약을 생성합니다. 이렇게 예약된 리소스는 이름으로 이 예약을 명시적으로 타겟팅하는 인스턴스에서만 사용할 수 있습니다.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --require-specific-reservation
    
  2. --reservation-affinity--reservation 플래그를 사용하여 이름으로 reservation-02를 타겟팅하는 VM 인스턴스를 만듭니다.

    인스턴스의 속성이 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 인터페이스를 비롯한 예약의 인스턴스 속성과 일치하는지 확인합니다.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=reservation-02
    

API

  1. specificReservationRequired 필드를 true로 설정하여 reservation-02라는 예약을 생성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake",
        }
      },
      "specificReservationRequired": true
    }
  2. reservationAffinity 필드를 사용하여 이름으로 reservation-02을 타겟팅하는 VM 인스턴스를 생성합니다.

    인스턴스의 속성이 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 인터페이스를 비롯한 예약의 인스턴스 속성과 일치하는지 확인합니다.

    POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["reservations/reservation-02"
        ]
      },
      ...
    }

특정 공유 예약 사용

특정 공유 예약을 사용하려면 Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용합니다.

콘솔

  1. 공유 예약을 만들고 이름으로 이 예약을 명시적으로 타겟팅하는 VM 인스턴스에서만 이 예약의 리소스를 사용할 수 있도록 합니다. 독립형 공유 예약 또는 약정에 연결된 공유 예약을 만들 수 있습니다.

    1. Google Cloud 콘솔에서 공유 예약을 만들 소유자 프로젝트를 선택하고 약정 사용 할인 페이지로 이동합니다.

      약정 사용 할인으로 이동

    2. 다음 옵션 중 하나를 사용하여 예약을 만듭니다.

      • 독립형 예약을 만들려면 예약 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만들려면 약정 구매를 클릭합니다. 다른 옵션을 지정한 후 예약 섹션에서 항목 추가를 클릭합니다. 연결된 예약으로 약정을 구매하는 방법에 대한 자세한 내용은 예약과 약정 사용 할인의 결합을 참조하세요.

    3. 이름 필드에 예약 이름을 입력합니다. 이 예시에서는 reservation-02를 입력합니다.

    4. 리소스를 예약할 리전영역을 선택합니다. 이 예시에서는 us-central1을 리전으로, us-central1-a를 영역으로 선택합니다.

    5. 예약을 공유 예약으로 지정하려면 공유 유형으로 공유를 선택합니다.

    6. 프로젝트 추가를 클릭하고 예약을 공유하려는 현재 프로젝트의 조직에서 프로젝트를 선택합니다.

    7. 이름을 통해 이 예약을 명시적으로 타겟팅하는 일치하는 VM 인스턴스만 이 예약을 사용할 수 있도록 하려면 VM 인스턴스와 함께 사용에서 특정 예약 선택을 선택합니다.

    8. VM 인스턴스 수 필드에 예약할 VM 인스턴스 수를 입력합니다. 이 예시에서는 10을 입력합니다.

    9. VM 인스턴스마다 예약할 리소스를 지정합니다.

      • 기존 인스턴스 템플릿과 일치하는 VM을 예약하려면 인스턴스 템플릿 사용을 선택하고 목록에서 인스턴스 템플릿을 선택합니다.
      • 또는 머신 유형 지정을 선택하고 다음을 지정합니다.
        1. 머신 계열, 시리즈, 머신 유형 필드에서 머신 계열, 시리즈, 머신 유형을 선택합니다.
        2. 선택사항: 최소 CPU 플랫폼 또는 GPU를 지정합니다.
          1. CPU 플랫폼 및 GPU 섹션을 확장하려면 확장 화살표를 클릭합니다.
          2. 선택사항: 최소 CPU 플랫폼을 지정하려면 CPU 플랫폼 목록에서 옵션을 선택합니다.
          3. 선택사항: GPU를 추가하려면 GPU 추가를 클릭합니다. 그런 다음 GPU 유형 필드와 GPU 수 필드에서 각 VM의 GPU 유형과 수를 선택합니다.
        3. 선택사항: 로컬 SSD를 추가합니다.
          1. 디스크 수 필드에서 각 VM의 로컬 SSD 수를 선택합니다.
          2. 인터페이스 유형 필드에서 로컬 SSD의 인터페이스를 선택합니다.

      이 예시에서는 머신 유형 지정을 선택합니다. 그런 다음 General-purpose 머신 계열 및 N2 시리즈에 대해 n2-standard-32 머신 유형을 선택하고 최소 CPU 플랫폼 Intel Cascade Lake를 선택합니다. 1. 예약 만들기를 완료합니다.

      • 독립형 예약을 만드는 경우 만들기를 클릭합니다.

      • 약정에 연결된 예약을 만드는 경우 다음 안내를 따르세요.

        1. 이 예약의 속성 지정을 완료하려면 완료를 클릭합니다.
        2. 약정 및 연결된 예약 만들기를 완료하려면 구매를 클릭합니다.
  2. 동일한 프로젝트 또는 예약이 공유된 프로젝트에서 이름으로 특정 예약을 타겟팅하는 VM 인스턴스를 만듭니다.

    영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 수량 및 유형, 로컬 SSD 인터페이스 및 크기를 포함하여 VM 인스턴스의 속성이 특정 예약의 VM 인스턴스 속성과 일치하는지 확인합니다.

    1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

      인스턴스 만들기로 이동

    2. VM의 이름을 지정합니다.

    3. 다음 섹션에서는 선택적인 속성을 포함하여 예약의 모든 속성과 정확하게 일치하는 구성을 선택합니다. 이 예시에서는 다음 VM 인스턴스 속성이 reservation-02과 일치하는지 확인해야 합니다.

      • 리전: us-central1
      • 영역: us-central1-a
      • 머신 유형: n2-standard-32
      • 최소 CPU 플랫폼: Intel Cascade Lake
      • GPU: 없음
      • 로컬 SSD: 없음
    4. 네트워킹, 디스크, 보안, 관리, 단독 테넌시 섹션을 펼치고 관리 섹션을 펼칩니다. 예약 목록에서 특정 예약 선택을 선택한 후 다음을 수행합니다.

      1. 현재 프로젝트와 예약이 공유된 예약 프로젝트를 선택합니다. 이 예시에서는 reservation-02를 만들기 위해 사용된 프로젝트를 선택합니다.
      2. 이 VM 인스턴스에 사용하려는 공유 예약의 예약 이름을 선택합니다. 이 예시에서는 reservation-02를 선택합니다.
    5. 만들기를 클릭하여 VM을 만듭니다.

gcloud

  1. --require-specific-reservation 플래그로 reservation-02라는 예약을 생성합니다. 이렇게 예약된 리소스는 이름으로 이 예약을 명시적으로 타겟팅하는 인스턴스에서만 사용할 수 있습니다.

    gcloud compute reservations create reservation-02 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --vm-count=10 \
        --zone=us-central1-a \
        --project=my-owner-project \
        --share-setting=projects \
        --share-with=project-1,project-2 \
        --require-specific-reservation
    
  2. --reservation-affinity--reservation 플래그를 사용하여 이름으로 reservation-02를 타겟팅하는 VM 인스턴스를 만듭니다. 이 예약을 공유하는 소비자 프로젝트에서 이 예약을 사용하려면 예약을 만든 프로젝트인 my-owner-project도 지정해야 합니다.

    인스턴스의 속성이 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 인터페이스를 비롯한 예약의 인스턴스 속성과 일치하는지 확인합니다.

    gcloud compute instances create instance-2 \
        --machine-type=n2-standard-32 \
        --min-cpu-platform "Intel Cascade Lake" \
        --zone=us-central1-a \
        --reservation-affinity=specific \
        --reservation=projects/my-owner-project/reservations/reservation-02
    

API

  1. specificReservationRequired 필드를 true로 설정하여 reservation-02라는 예약을 생성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/my-owner-project/zones/us-central1-a/reservations
    
    {
      "name":"reservation-02",
      "specificReservation":{
        "count":"10",
        "instanceProperties":{
          "machineType":"n2-standard-32",
          "minCpuPlatform": "Intel Cascade Lake"
        }
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "project-1": {
            "projectId": "project-1"
          },
          "project-2": {
            "projectId": "project-2"
          }
        }
      }
      "specificReservationRequired": true
    }
  2. reservationAffinity 필드를 사용하여 이름으로 reservation-02을 타겟팅하는 VM 인스턴스를 생성합니다. 이 예약을 공유하는 소비자 프로젝트에서 이 예약을 사용하려면 예약을 만든 프로젝트인 my-owner-project도 지정해야 합니다.

    인스턴스의 속성이 영역, 머신 유형(머신 계열, vCPU, 메모리), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 인터페이스를 비롯한 예약의 인스턴스 속성과 일치하는지 확인합니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-2/zones/us-central1-a/instances
    
    {
      "name": "instance-2",
      "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
      "minCpuPlatform": "Intel Cascade Lake",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["projects/my-owner-project/reservations/reservation-02"
        ]
      },
      ...
    }

예약을 사용하지 않는 인스턴스 생성

예약에서 리소스가 명시적으로 사용되지 않도록 하려면 VM을 만들 때 예약을 사용하지 않도록 예약 어피니티 속성을 설정합니다. 또는 예약이 암시적으로 사용되지 않도록 예약의 인스턴스 속성과 일치하지 않는 인스턴스를 만듭니다.

콘솔

  1. 예약에서 명시적으로 사용하지 않는 VM을 만듭니다.

    1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

      인스턴스 만들기로 이동

    2. VM을 만듭니다. 자세한 내용은 VM 인스턴스 만들기 및 시작을 참조하세요.

    3. 네트워킹, 디스크, 보안, 관리, 단독 테넌시 섹션을 펼친 후 다음을 수행합니다.

      1. 관리 섹션을 펼칩니다.
      2. 이 VM이 기존 예약을 사용하지 않도록 하려면 예약 목록에서 사용 안함을 선택합니다.
    4. 만들기를 클릭합니다.

gcloud

예약에서 명시적으로 사용하지 않는 인스턴스를 생성합니다.

gcloud compute instances create instance-3 --reservation-affinity=none

또는 예약의 인스턴스 속성과 일치하지 않는 인스턴스를 생성할 수도 있습니다. 예약 속성을 검토하려면 예약 나열 및 설명을 참조하세요.

API

예약에서 명시적으로 사용하지 않는 인스턴스를 생성합니다.

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

{
  "machineType": "zones/us-central1-a/machineTypes/n2-standard-32",
  "name": "instance-3",
  "reservationAffinity":
  {
    "consumeReservationType": "NO_RESERVATION"
  },
  ...
}

또는 예약의 인스턴스 속성과 일치하지 않는 인스턴스를 생성할 수도 있습니다. 예약 속성을 검토하려면 예약 나열 및 설명을 참조하세요.

문제 해결

예약 사용 확인예약 사용 관련 문제 해결 방법을 확인합니다.

예약 나열 및 설명

현재 프로젝트에서 생성된 예약만 나열하고 설명할 수 있습니다. 따라서 공유 예약은 소유자 프로젝트에 대해서만 나열되며 프로젝트와 공유된 예약을 나열하거나 조직의 모든 예약을 나열할 수는 없습니다. 또한 예약을 설명할 때 공유 예약에 대해 모든 소비자 프로젝트 목록을 볼 수도 있습니다. 공유 예약을 관리하는 방법에 대한 권장사항은 공유 예약 권장사항을 참조하세요.

Google Cloud 콘솔, gcloud CLI, Compute Engine API를 사용해서 프로젝트에서 생성된 예약 목록과 각 예약의 세부정보를 확인합니다.

콘솔

  1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인으로 이동

  2. 현재 프로젝트에 생성된 모든 예약을 나열하려면 예약 탭을 선택합니다.

    목록에서 각 행은 예약을 설명하고 각 열은 속성을 설명합니다. 예를 들어 사용된 머신 열은 각 예약의 사용률 및 총 용량을 설명합니다. 25 (50) 값은 50개 인스턴스 예약을 나타냅니다. 이러한 인스턴스 중 25개가 사용되었고 현재 사용 중입니다.

    선택사항: 표시되는 예약 및 속성을 수정하려면 각각 필터 열 표시 옵션을 사용합니다.

  3. 예약의 모든 속성을 설명하려면 목록에서 예약 이름을 클릭합니다. 예약 세부정보 페이지가 열립니다.

gcloud

gcloud compute reservations list 명령어를 사용하여 예약 목록을 확인합니다.

gcloud compute reservations list [--filter="zone:('ZONE')"]

NAME             IN_USE_COUNT   COUNT   ZONE
reservation-04   25             50      us-central1-a
reservation-05   0              100     us-central1-b

다음의 gcloud compute reservations describe 명령어로 예약을 설명합니다.

gcloud compute reservations describe RESERVATION_NAME --zone=ZONE

kind: compute#reservation
name: reservation-04
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04
specificReservation:
  count: '50'
  inUseCount: '25'
  instanceProperties:
    guestAccelerators:
    - acceleratorCount: 1
      acceleratorType: nvidia-tesla-k80
    localSsds:
    - diskSizeGb: '375'
      interface: SCSI
    machineType: n1-standard-2
    minCpuPlatform: Any CPU Platform
specificReservationRequired: false
status: READY
zone: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a    

countinUseCount 값을 사용하여 각 예약의 사용률을 결정할 수 있습니다. 이 예시에서는 50개의 인스턴스가 reservation-04에 예약되었으며, 이러한 인스턴스 중 25개가 예약에서 소비되어 현재 사용 중입니다.

이 예약을 사용하는 인스턴스를 생성하려면 예약의 인스턴스 속성이 일치해야 합니다. 예를 들면 다음과 같습니다.

gcloud compute instances create my-instance \
    --accelerator=type=nvidia-tesla-k80,count=1 \
    --local-ssd=size=375,interface=scsi \
    --machine-type n1-standard-2 \
    --zone us-central1-a 

API

API에서 reservations.list 메서드에 대해 GET 요청을 실행하여 예약을 나열합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "4100668622331754141",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-05",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "name": "reservation-05",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2"
    },
    "count": "100",
    "inUseCount": "0"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
},
{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
  "name": "reservation-04",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  },
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation"
}

reservations.get 메서드를 호출하여 예약을 설명합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME

{
  "id": "2533514314332214789",
  "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-centra1-a",
  "name": "reservation-04",
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-2",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  }
}

countinUseCount 값을 사용하여 각 예약의 사용률을 결정할 수 있습니다. 이 예시에서는 50개의 인스턴스가 예약되고 그 중에서 25개의 인스턴스가 예약에서 소비되어 현재 사용 중입니다.

예약 수정

예약된 VM 수를 변경하려면 예약의 크기를 조정합니다. 소비를 제한하거나 확장하려면 공유 예약을 사용할 수 있는 프로젝트를 수정합니다.

예약의 다른 속성을 변경하려면 먼저 새 예약을 만들고 나서 이전 예약을 삭제합니다.

예약 크기 조정

gcloud CLI 또는 API를 사용하여 예약의 VM 수를 조정할 수 있습니다(확대 또는 축소).

gcloud

gcloud compute reservations update 명령어를 사용하여 예약의 크기를 조절합니다. 예를 들면 다음과 같습니다.

예를 들어 2개의 VM 인스턴스에 대해 하나의 예약을 만든다고 가정해 보세요.

gcloud compute reservations create reservation-01 \
    --machine-type=n2-standard-32 \
    --zone=us-central1-a \
    --vm-count=2

예시 예약 크기를 VM 2개에서 10개로 조정하려면 다음 명령어를 사용합니다.

gcloud compute reservations update reservation-01 \
    --zone=us-central1-a \
    --vm-count=10

API

API에서 reservations.resize 메서드에 대한 POST 요청을 작성하고 요청 본문에 새로운 specificSkuCount를 포함합니다. 아래의 요청 본문은 예약의 VM 수를 10으로 업데이트합니다.

POST https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>/resize

{"specificSkuCount": "10"}

요청 시점에 타겟 영역에 충분한 리소스가 있고 타겟 리전에 충분한 할당량이 있으면 업데이트 요청이 성공합니다.

공유 예약을 위한 소비자 프로젝트 수정

공유 예약을 위한 소비자 프로젝트를 수정하려면 Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용합니다. 예약을 기술하여 예약이 공유된 프로젝트를 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인으로 이동

  2. 예약 탭을 선택합니다.

  3. 소비자 프로젝트를 수정하려는 공유 예약의 이름을 클릭합니다.

  4. 수정을 클릭합니다.

  5. 선택한 프로젝트 목록을 수정합니다.

    • 특정 소비자 프로젝트와 예약 공유를 중지하려면 프로젝트 이름 옆에서 삭제를 클릭합니다.
    • 예약을 더 많은 프로젝트와 공유하려면 프로젝트 추가를 클릭하고 예약을 공유하려는 소유자 프로젝트의 조직에서 프로젝트를 선택합니다.
  6. 저장을 클릭하여 공유 예약에 대한 알림을 확인합니다.

gcloud

gcloud CLI를 사용하면 프로젝트를 추가하거나, 삭제하거나, 전체 목록을 바꿔서 공유 예약을 사용할 수 있는 프로젝트 목록을 변경할 수 있습니다.

  • 공유 예약을 사용할 수 있는 프로젝트 목록에서 프로젝트를 한 개 이상 추가하려면 --add-share-with 플래그와 함께 gcloud compute reservations update 명령어를 사용합니다.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --add-share-with=CONSUMER_PROJECT_IDS \
    

    다음을 바꿉니다.

    • RESERVATION_NAME: 수정하려는 공유 예약의 이름입니다.
    • ZONE: 예약이 생성된 영역입니다.
    • OWNER_PROJECT_ID: 이 예약을 만들 때 사용한 프로젝트인 소유자 프로젝트의 프로젝트 ID입니다.
    • CONSUMER_PROJECT_IDS: 이 예약을 공유할 하나 이상의 프로젝트 ID를 쉼표로 구분한 목록입니다(예: project-1,project-2). 이 예약을 기본적으로 사용할 수 있도록 이미 허용된 OWNER_PROJECT_ID는 포함하지 마세요.
  • 공유 예약을 사용할 수 있는 프로젝트 목록에서 프로젝트를 한 개 이상 삭제하려면 --remove-share-with 플래그와 함께 gcloud compute reservations update 명령어를 사용합니다.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --remove-share-with=CONSUMER_PROJECT_IDS \
    

    다음을 바꿉니다.

    • RESERVATION_NAME: 수정하려는 공유 예약의 이름입니다.
    • ZONE: 예약이 생성된 영역입니다.
    • OWNER_PROJECT_ID: 이 예약을 만들 때 사용한 프로젝트인 소유자 프로젝트의 프로젝트 ID입니다.
    • CONSUMER_PROJECT_IDS: 이 예약의 공유를 중지할 하나 이상의 프로젝트 ID를 쉼표로 구분한 목록입니다(예: project-1,project-2). OWNER_PROJECT_ID를 사용해서는 이 예약의 공유를 중지할 수 없습니다.
  • 공유 예약을 사용할 수 있는 프로젝트 목록을 바꾸려면 --share-with 플래그와 함께 gcloud compute reservations update 명령어를 사용합니다.

    gcloud compute reservations update RESERVATION_NAME \
      --zone=ZONE \
      --project=OWNER_PROJECT_ID
      --share-with=CONSUMER_PROJECT_IDS \
    

    다음을 바꿉니다.

    • RESERVATION_NAME: 수정하려는 공유 예약의 이름입니다.
    • ZONE: 예약이 생성된 영역입니다.
    • OWNER_PROJECT_ID: 이 예약을 만들 때 사용한 프로젝트인 소유자 프로젝트의 프로젝트 ID입니다.
    • CONSUMER_PROJECT_IDS: 이 예약을 사용하도록 허용할 모든 프로젝트에 대해 하나 이상의 프로젝트 ID가 쉼표로 구분된 목록입니다. 예를 들면 project-1,project-2입니다. 이 예약의 공유를 계속하려는 기존 소비자 프로젝트 ID를 포함하고 이 예약의 공유를 중지하려는 프로젝트 ID를 생략합니다. 그런 후 이 예약을 공유하려는 새로운 소비자 프로젝트 ID를 추가합니다. 이러한 프로젝트는 소유자 프로젝트와 동일한 조직에 있어야 합니다. 이 예약을 기본적으로 사용할 수 있도록 이미 허용된 OWNER_PROJECT_ID는 포함하지 마세요.

API

API에서 reservations.update 메서드에 대해 PATCH 요청을 작성합니다. 요청 본문에서 shareSettings.projectMap 필드를 사용해서 이 예약이 공유된 프로젝트 목록으로 바꿉니다.

PATCH https://compute.googleapis.com/compute/v1/projects/OWNER_PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=sharedSettings.projects

{
  "shareSetting": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  }
}

다음을 바꿉니다.

  • OWNER_PROJECT_ID: 이 예약을 만들 때 사용한 프로젝트인 소유자 프로젝트의 프로젝트 ID입니다.
  • ZONE: 예약이 생성된 영역입니다.
  • RESERVATION_NAME: 수정하려는 예약의 이름입니다. 현재는 공유 예약이어야 합니다.
  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: 이 예약을 공유하려는 하나 이상 프로젝트의 프로젝트 ID입니다. 이 예약의 공유를 계속하려는 기존 소비자 프로젝트 ID를 포함하고 이 예약의 공유를 중지하려는 프로젝트 ID를 생략합니다. 그런 후 이 예약을 공유하려는 새로운 소비자 프로젝트 ID를 추가합니다. 이러한 프로젝트는 소유자 프로젝트와 동일한 조직에 있어야 합니다. 이 예약을 기본적으로 사용할 수 있도록 이미 허용된 OWNER_PROJECT_ID는 포함하지 마세요.

예약을 사용할 수 있는 프로젝트를 수정하면 예약 사용이 변경될 수 있습니다. 예를 들어 삭제된 소비자 프로젝트는 이 예약에서 리소스 사용을 중지합니다. 또한 예약이 예약의 속성(기본 동작)과 일치하는 새 인스턴스 또는 기존 인스턴스에 자동으로 적용되도록 구성된 경우 추가된 소비자 프로젝트가 이 예약에서 리소스를 사용하기 시작할 수 있습니다. 이 예약의 사용을 모니터링하려면 예약 나열 및 설명을 참조하세요.

예약 삭제

콘솔, gcloud CLI 또는 API를 사용하여 약정에 연결되지 않은 예약을 삭제할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인으로 이동

  2. 예약을 클릭하여 예약 목록을 표시합니다.

  3. 삭제할 각 예약 옆의 체크박스를 선택합니다.

  4. 예약 삭제를 클릭합니다.

gcloud

delete 명령어를 사용하여 예약을 해제할 수 있습니다.

gcloud compute reservations delete RESERVATION_NAME --zone ZONE

다음을 바꿉니다.

  • RESERVATION_NAME: 삭제하려는 예약의 이름입니다.
  • ZONE: 예약이 있는 영역입니다.

API

API에서 reservation.delete 메서드에 대해 DELETE 요청을 작성합니다.

DELETE https://compute.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/reservations/<var>RESERVATION_NAME</var>

다음을 바꿉니다.

  • PROJECT_ID: 이 예약을 만드는 데 사용된 프로젝트의 프로젝트 ID입니다.
  • RESERVATION_NAME: 삭제하려는 예약의 이름입니다.
  • ZONE: 예약이 있는 영역입니다.

삭제 명령어가 성공적으로 완료되면 해당 예약에 대하여 더 이상 비용이 청구되지 않으며 리소스가 더 이상 예약되지 않습니다. 예약을 삭제해도 해당 예약에 연결되어 있던 실행 중인 인스턴스는 영향을 받지 않습니다. 실행 중인 인스턴스는 계속 실행되며 해당 인스턴스에 대한 요금은 계속 청구됩니다.

약정 사용 할인과 예약의 결합

약정 사용 할인은 1년 또는 3년 리소스 약정에 대한 대가로 대폭 할인된 리소스 가격을 제공하지만 특정 영역의 용량을 예약하지는 않습니다. 예약은 예약된 VM이 실행되지 않는 경우에도 특정 영역에 용량이 유지되도록 합니다. 예약을 약정에 연결하면 할인된 예약 리소스를 얻을 수 있습니다.

처음 약정을 구매할 때 예약을 만들고 약정에 연결해야 합니다. 단일 약정에 예약을 여러 개 연결할 수 있지만 예약 하나에는 약정 하나만 있을 수 있습니다.

예약이 연결된 약정을 구매하면 약정 기간 동안 예약을 삭제할 수 없습니다. 약정이 만료되거나 취소되면 Compute Engine에서 연결된 예약을 자동으로 삭제합니다.

하지만 약정의 기존 연결된 예약을 새 예약으로 바꿀 수 있습니다. 약정을 위해 생성된 예약에서 변경할 수 있는 항목과 변경할 수 없는 항목에 대한 자세한 내용은 약정에 연결된 예약 바꾸기를 참조하세요.

연결된 예약이 필요 없는 약정된 리소스

vCPU 또는 메모리의 약정을 구매하기 위해 리소스를 예약할 필요가 없습니다. 그럼에도 불구하고 Compute Engine이 약정된 리소스의 용량을 유지하도록 하려면 vCPU 또는 메모리를 계속 예약하고 예약을 약정에 연결할 수 있습니다. vCPU 또는 메모리 전용 약정을 구매하고 예약하지 않는 방법은 머신 유형의 약정 구매를 참조하세요.

연결된 예약이 필요한 약정된 리소스

GPU 또는 로컬 SSD의 약정을 구매하려면 리소스도 예약해야 합니다. 단일 또는 예약 조합을 사용하여 약정된 GPU 또는 로컬 SSD를 예약할 수 있습니다. GPU 또는 로컬 SSD의 약정에도 vCPU 또는 메모리가 포함될 수 있지만 vCPU 또는 메모리를 예약할 필요는 없습니다. GPU 또는 로컬 SSD가 포함된 약정을 구매하는 방법은 연결된 예약이 있는 약정 구매를 참조하세요.

약정한 것보다 더 많거나 적은 리소스 예약

예약을 약정에 연결하면 vCPU 또는 메모리를 약정보다 많거나 적은 양으로 예약할 수 있습니다. 예를 들어 30GB 메모리의 약정을 구매할 때 10GB 메모리, 50GB 메모리 또는 메모리를 사용하지 않음을 예약할 수 있습니다. 하지만 약정에 GPU 또는 로컬 SSD가 포함된 경우 약정할 GPU 또는 로컬 SSD를 정확한 수로 예약하고 연결해야 합니다. 예를 들어 30GB 메모리와 GPU 4개에 대한 약정을 구매한 경우 원하는 양의 메모리를 예약할 수 있지만 연결하는 예약(또는 예약 조합)에는 정확하게 GPU 4개가 포함되어야 합니다. 따라서 vCPU 또는 메모리를 약정하지 않아도 vCPU와 메모리를 예약하고 연결할 수 있지만 GPU 또는 로컬 SSD를 예약하고 연결할 수 없습니다.

예약이 연결된 약정 구매

예약이 연결된 약정을 구매할 때 약정과 예약이 다음 기준을 충족하는지 확인합니다.

  • 약정과 연결된 예약이 같은 리전에 있어야 합니다.
  • 예약은 약정과 동일한 머신 시리즈에 대한 예약이어야 합니다.
  • 약정에 GPU가 포함된 경우 예약의 GPU 유형과 약정이 일치해야 합니다.
  • GPU와 로컬 SSD의 경우 각 리소스 유형의 예약된 리소스 수가 해당 리소스 유형에 약정된 리소스 수와 정확히 일치해야 합니다. 예를 들어 V100 GPU 4개의 약정을 구매하려면 약정의 연결된 예약에 V100 GPU 총 4개가 포함되어야 합니다. 하지만 예약하는 vCPU 및 메모리의 크기는 약정하는 크기보다 크거나 작을 수 있습니다.
  • GPU의 경우 사용할 특정 GPU 유형의 약정을 구매합니다. 예를 들어 NVIDIA P100 또는 NVIDIA V100의 약정을 구매할 수 있지만 NVIDIA P100 GPU용으로 구매한 약정을 사용하여 NVIDIA V100 GPU를 적용할 수는 없습니다.

Google Cloud 콘솔, gcloud CLI 또는 API를 사용하여 연결된 예약이 있는 약정을 구매할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 약정을 구매하기 전에 약정을 구매하는 데 사용할 프로젝트를 선택합니다. 결제 계정에 할인 공유가 사용 설정된 경우 해당 결제 계정의 프로젝트를 사용하여 약정을 구매할 수 있습니다. 프로젝트를 선택한 후 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인으로 이동

  2. 새 약정을 구매하려면 약정 구매를 클릭합니다.

  3. 약정 이름을 지정하고 적용할 리전을 선택합니다.

  4. GPU 또는 로컬 SSD의 약정 유형을 선택합니다.
    N2 머신 유형용 범용 N2
    N2D 머신 유형용 범용 N2D
    N1 머신 유형용 범용 N1
    C2 머신 유형용 컴퓨팅 최적화 C2
    가속화 최적화 머신 유형용 가속화 최적화 A2

  5. 약정 기간을 1년 또는 3년으로 선택합니다.

  6. 구매하려는 코어메모리 수량을 입력합니다. vCPU와 메모리에 대한 약정 없이 GPU 또는 로컬 SSD만 약정하고 예약하려면 vCPU와 메모리 약정 수량을 0으로 지정합니다.

  7. GPU 추가를 클릭하고 약정할 GPU 유형GPU 수를 선택합니다.

  8. 로컬 SSD 추가를 클릭하고 약정할 디스크 수를 지정합니다.

  9. 예약을 만들고 약정에 연결하려면 예약 섹션에서 항목 추가를 클릭합니다.

    1. 이름 필드에 예약 이름을 입력합니다.
    2. 리소스를 예약할 리전영역을 선택합니다.
    3. 원하는 공유 유형을 선택합니다.
      • 단일 프로젝트에 대한 예약을 만들려면 로컬을 선택합니다.
      • 여러 프로젝트 간에 공유 예약을 만들려면 공유를 선택합니다. 이 예약을 다른 프로젝트와 공유하려면 프로젝트 추가를 클릭하고 현재 프로젝트의 조직에서 원하는 프로젝트를 선택합니다.
    4. VM 인스턴스와 함께 사용 필드에서 다음 옵션 중 하나를 선택합니다.

      • 이름을 통해 이 예약을 명시적으로 타겟팅하는 일치하는 VM을 만들 때만 이 예약의 리소스를 사용하려면 특정 예약 선택을 선택합니다.
      • 일치하는 VM 인스턴스에서 이 예약을 자동으로 사용하도록 허용하려면 예약 자동 사용을 선택합니다.
    5. VM 인스턴스 수 필드에 예약할 VM 인스턴스 수를 입력합니다.

    6. VM 인스턴스마다 예약할 리소스를 지정합니다.

      • 기존 인스턴스 템플릿과 일치하는 VM을 예약하려면 인스턴스 템플릿 사용을 선택하고 목록에서 인스턴스 템플릿을 선택합니다.
      • 또는 머신 유형 지정을 선택하고 다음을 지정합니다.
        1. 머신 계열, 시리즈, 머신 유형 필드에서 머신 계열, 시리즈, 머신 유형을 선택합니다.
        2. 선택사항: 최소 CPU 플랫폼 또는 GPU를 지정합니다.
          1. CPU 플랫폼 및 GPU 섹션을 확장하려면 확장 화살표를 클릭합니다.
          2. 선택사항: 최소 CPU 플랫폼을 지정하려면 CPU 플랫폼 목록에서 옵션을 선택합니다.
          3. 선택사항: GPU를 추가하려면 GPU 추가를 클릭합니다. 그런 다음 GPU 유형 필드와 GPU 수 필드에서 각 VM의 GPU 유형과 수를 선택합니다.
        3. 선택사항: 로컬 SSD를 추가합니다.
          1. 디스크 수 필드에서 각 VM의 로컬 SSD 수를 선택합니다.
          2. 인터페이스 유형 필드에서 로컬 SSD의 인터페이스를 선택합니다.
    7. 이 예약의 속성 지정을 완료하려면 완료를 클릭합니다.

  10. 구매 버튼을 클릭하여 약정을 구매합니다.

  11. 구매 약관을 읽고 약정을 구매할 준비가 되면 구매를 클릭합니다.

gcloud

gcloud compute commmitments create 명령어를 사용하여 약정을 구매하고 플래그를 포함하여 연결된 예약을 생성합니다.

예를 들어 다음 약정에는 GPU 4개와 us-central1-an1-standard-32 인스턴스 2개에서 해당 GPU 4개를 사용하기 위한 새 예약이 포함됩니다.

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-32 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

vCPU와 메모리의 약정 없이 GPU 또는 로컬 SSD를 약정하고 예약하려면 vCPU와 메모리 약정 수량을 0으로 지정합니다.

gcloud compute commitments create commitment-01 \
    --region=us-west2 \
    --resources=vcpu=0,memory=0 \
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

약정을 구매할 때 여러 예약을 만들려면 예약 속성이 포함된 YAML 파일을 사용합니다. 예를 들면 다음과 같습니다.

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --resources=vcpu=96,memory=624,local-ssd=750 \
    --resources-accelerator=type=nvidia-tesla-v100,count=1 \
    --plan 12-month \
    --reservations-from-file=YAML_FILE

예를 들어 다음 YAML 파일에는 예약 2개가 포함됩니다. 첫 번째 예약 res-01은 1개의 GPU가 있는 1개의 n1-standard-2 인스턴스를 포함하는 타겟팅된 예약입니다. 즉, 예약 인스턴스를 사용하려면 해당 예약을 이름별로 구체적으로 타겟팅해야 합니다. 두 번째 예약 res-02는 2개 유형의 연결된 로컬 SSD가 있는 1개의 n1-standard-2 VM 인스턴스를 포함합니다.

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-2
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

API

regionCommitments.insert 메서드를 사용하고 reservations 필드를 포함하여 예약 속성을 정의할 수 있습니다. 예를 들어 다음 약정에는 GPU 4개와 us-central1-a의 인스턴스 2개에서 해당 CPU 4개를 사용하기 위한 예약이 포함됩니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

vCPU와 메모리의 약정 없이 GPU 또는 로컬 SSD만 약정하고 예약하려면 vCPU와 메모리 약정 수량을 0으로 지정합니다. 예를 들면 다음과 같습니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

대상 영역에 지정된 머신 유형의 리소스가 충분하고 요청 시 할당량이 충분한 경우에만 연결된 예약이 있는 약정이 성공적으로 생성됩니다.

예약이 연결된 약정을 만들면 약정 기간 동안 예약을 삭제할 수 없습니다. 약정이 만료되면 Compute Engine이 연결된 예약을 자동으로 삭제합니다. 예약 삭제는 예약과 연결되어 있는 실행 중인 인스턴스에 영향을 주지 않습니다. 실행 중인 인스턴스는 계속 실행되며 해당 인스턴스에 대한 요금은 계속 청구됩니다.

약정 예약 속성을 수정해야 하는 경우 약정에 연결된 예약 수정을 참조하세요.

약정에 연결된 예약 교체

약정된 리소스를 사용하는 VM 유형과 수를 수정하려면 약정의 기존 연결 예약을 새 예약으로 바꿉니다. 약정의 기존 연결된 예약을 새 예약으로 바꾸면 다음과 같이 변경할 수 있습니다.

  • 다른 머신 유형에서 VM을 예약할 수 있습니다. 그러나 예약된 리소스에 약정 사용 할인을 계속 받으려면 같은 머신 계열에서 VM을 계속 예약해야 합니다.
  • 예약할 VM 수를 변경할 수 있습니다.
  • VM마다 연결되는 GPU와 로컬 SSD의 수량을 변경할 수 있습니다.

한 번에 연결된 예약 하나만 새 연결 예약 하나로 바꿀 수 있습니다. 바뀐 예약을 로컬 예약이나 공유 예약으로 지정할 수 있습니다.

약정의 연결된 예약을 새 예약으로 바꾸면 새 예약이 다음 요구사항을 충족하는지 확인합니다.

  • 새 예약은 약정과 동일한 프로젝트에 있어야 합니다.

  • 새 예약은 원래 예약과 동일한 영역에 있어야 합니다.

  • 새 예약의 GPU 수와 유형은 원래 예약의 GPU 수 및 유형과 일치해야 합니다.

  • 새 예약의 로컬 SSD 양과 유형은 원래 예약의 로컬 SSD의 양 및 유형과 일치해야 합니다.

  • 요청당 VM을 최대 100대까지만 변경할 수 있습니다. 100개를 초과하는 VM과 관련된 변경 작업을 수행하려면 변경사항을 여러 개의 작은 요청으로 나누거나 Google Cloud 지원팀에 문의하세요.

gcloud CLI 또는 API를 사용하여 약정의 예약을 바꿀 수 있습니다. 새 예약을 만든 후에는 해당 VM을 필요에 따라 변경해야 할 수 있습니다.

gcloud

gcloud beta compute commitments update-reservations 명령어를 사용해서 약정에 연결된 예약을 업데이트합니다.

예를 들어 다음 예약이 포함된 약정을 생성합니다.

  • res-1에 4개의 n1-standard-2 인스턴스가 있고 각 인스턴스에 P100 GPU가 하나씩 있습니다(8개의 vCPU 및 4개의 P100 GPU). 예약된 총 리소스에는 4개의 P100 GPU가 포함됩니다.

다음 명령어를 사용하여 예시 약정을 만들 수 있습니다.

gcloud beta compute commitments create my-commitment-with-reservations \
    --region=asia-east1 \
    --resources=vcpu=10,memory=32GB \
    --resources-accelerator=type=nvidia-tesla-p100,count=4 \
    --plan 12-month \
    --reservations-from-file=one-reservation.yaml

여기에서 one-reservation.yaml 파일에는 다음이 포함됩니다.

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 4
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

예시 약정을 업데이트하여 기존 연결 예약을 새 예약으로 바꿀 수 있습니다. 이 예시에서는 연결된 예약 res-1을 새 예약 res-2로 바꾸려면 다음을 수행하면 됩니다.

  • n1-standard-2 인스턴스 4개가 있는 res-1을 삭제합니다. 인스턴스마다 P100 GPU 1개가 있습니다(총 vCPU 8개와 P100 GPU 4개).
  • n1-standard-2 인스턴스 2개가 있는 res-2를 만들고 연결합니다. 인스턴스마다 P100 GPU 2개가 있습니다(총 vCPU 4개와 P100 GPU 4개).

특히 약정 내에서 예약된 GPU의 총 수는 4개로 일정하게 유지됩니다.

예시 업데이트를 수행하려면 다음 명령어를 사용합니다.

gcloud beta compute commitments update-reservations my-commitment-with-reservations \
    --region=us-central1 \
    --reservations-from-file=two-reservations.yaml

여기에서 two-reservations.yaml 파일에는 다음이 포함됩니다.

- reservation: res-1
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100
- reservation: res-2
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 3
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

regionCommitments.updateReservations 메서드를 사용합니다.

예를 들어 다음 예약이 포함된 약정을 생성합니다.

  • res-1에는 nvidia-tesla-p100 GPU가 1개씩 있는 n1-standard-2 인스턴스 4개가 있습니다(vCPU 8개와 P100 GPU 4개). 예약된 총 리소스에는 P100 GPU 4개가 포함됩니다.

다음 명령어를 사용하여 예시 약정을 만들 수 있습니다.

POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservation/updateReservations

{
  "name": "my-commitment-with-reservation",
  "plan": "TWELVE_MONTH",
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "4",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ],
  "resources":
  [
    {
      "amount": "10",
      "type": "VCPU"
    },
    {
      "amount": "32768",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ]
}

예시 약정을 업데이트하여 기존 연결된 예약을 새 예약으로 바꿀 수 있습니다.

예를 들어 연결된 예약 res-1을 새 단일 프로젝트 예약 res-2로 바꾸려면 다음을 수행하면 됩니다.

  • n1-standard-2 인스턴스 4개가 있는 res-1을 삭제합니다. 인스턴스마다 P100 GPU 1개가 있습니다(총 vCPU 8개와 P100 GPU 4개).
  • n1-standard-2 인스턴스 2개가 있는 res-2를 만들고 연결합니다. 인스턴스마다 P100 GPU 2개가 있습니다(총 vCPU 4개와 P100 GPU 4개).

특히 약정 내에서 예약된 GPU의 총 수는 4개로 일정하게 유지됩니다.

예시를 업데이트하려면 다음 API 요청을 사용합니다.

POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservation/updateReservations

{
  "reservations":
  [
    {
      "name": "res-2",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ]
}

또한 예시 약정을 업데이트하여 기존 연결된 예약을 새 공유 예약으로 바꿀 수 있습니다. 연결된 단일 프로젝트 예약 res-1project-1project-2와 공유하는 예약 res-3으로 바꾸려면 다음 API 요청을 사용하도록 수행하면 됩니다.

POST https://compute.googleapis.com/compute/beta/projects/my-project/regions/asia-east1/commitments/my-commitment-with-reservation/updateReservations

{
  "reservations":
  [
    {
      "name": "res-3",
      "specificReservation":
      {
        "count": "6",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "project-1": {
            "projectId": "project-1"
          },
          "project-2": {
            "projectId": "project-2"
          }
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    }
  ]
}

예약 사용 보고서 보기

사용량 내보내기 기능을 사용하여 Compute Engine 사용량의 상세한 보고서를 Cloud Storage 버킷으로 내보냅니다. 자세한 안내는 사용량 보고서 보기를 참조하세요.

사용량 보고서에는 다음이 표시됩니다.

  • 사용 중인 예약 리소스. 이러한 항목은 일반 vCPU, 메모리, GPU, 로컬 SSD 리소스로 표시됩니다.
  • 사용하지 않는 예약 리소스. 이러한 항목에는 일반 SKU 이름과 예약 리소스 URI가 있습니다.
  • 총 예약 리소스. 이러한 항목에는 예약 SKU 이름과 예약 리소스 URI가 있습니다. 이 항목과 관련된 비용은 없습니다. 사용 중인 예약의 양을 계산할 때 이 항목을 사용합니다.
Measurement MeasurementId format Resource URI format
사용 중인 예약 리소스 com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/RESOURCE_TYPE/RESOURCE_NAME.

예를 들면 https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance입니다.
사용하지 않는 예약 리소스 com.google.cloud/services/compute-engine/SKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

예를 들면 https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation입니다.
총 예약 리소스 com.google.cloud/services/compute-engine/ReservationSKU_NAME https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME.

예를 들면 https://compute.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-b/reservations/my-reservation입니다.

예를 들어 다음 스니펫에서 my-reservation이라는 예약의 사용량 보고서에 포함된 각 항목의 의미는 다음과 같습니다.

  • 행 1은 현재 사용 중인 예약 RAM을 보여줍니다. 행의 ResourceId는 이 RAM이 my-instance라는 인스턴스에서 사용되고 있음을 보여줍니다.
  • 행 2는 사용하지 않는 예약 RAM을 보여줍니다. 행의 ResourceId는 이 예약이 my-reservation에 있음을 보여줍니다. 이 RAM은 어떤 인스턴스에서도 사용되지 않습니다.
  • 행 3은 예약의 총 예약 RAM을 보여줍니다.
Report Date,MeasurementId,Quantity,Unit,Resource URI,ResourceId,Location
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/instances/my-instance,1775485842510981624,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/VmimageN2StandardRam,166970074857472,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
2019-06-06,com.google.cloud/services/compute-engine/ReservationN2StandardRam,333940149714944,byte-seconds,https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central2-a/reservations/my-reservation,7.58809E+17,us-central2-a
...

다음 단계