Compute Engine 영역 리소스 예약

추가 GPU 또는 로컬 SSD를 사용하거나 사용하지 않고 커스텀 또는 사전 정의된 머신 유형을 사용해 특정 영역에서 VM 인스턴스의 예약을 생성하여 필요할 때 워크로드에 리소스를 사용할 수 있도록 합니다. 예약을 생성한 후에 바로 예약된 리소스의 비용을 지불하기 시작하며, 예약이 삭제될 때까지 예약된 리소스를 프로젝트에 무제한 사용할 수 있습니다.

예약을 사용하면 계획되거나 계획되지 않은 급증, 많은 수의 VM 마이그레이션, 백업 및 재해 복구를 비롯한 향후 수요 증가에 필요한 리소스 또는 계획된 성장 및 버퍼에 필요한 리소스를 프로젝트에 확보할 수 있습니다.

더 이상 예약이 필요하지 않으면 예약을 삭제하여 요금 청구를 중지하세요. 예약도 일반 VM처럼 리소스를 사용하므로 각 예약에 기존의 주문형 요금대로 요금이 청구됩니다. 여기에 지속 사용 할인이 포함되고 약정 사용 할인이 적용될 수 있습니다.

시작하기 전에

장점

예약을 사용하면 다음과 같은 이점이 있습니다.

  • 머신을 바로 사용하지 않더라도 언제든지 사용 가능하도록 예약할 수 있습니다.
  • 언제든지 예약을 생성할 수 있고 언제든지 예약을 삭제하여 지불을 중지할 수 있습니다.

  • 예약은 예약 중인 리소스와 동일한 방식으로 그리고 동일한 가격으로 요금이 청구됩니다. 따라서 예약한 리소스는 약정 사용 할인 및 지속 사용 할인을 받을 수 있습니다.

제한 및 제약사항

예약에는 다음과 같은 제한사항 및 제약조건이 적용됩니다.

  • 예약은 Compute Engine, Cloud Dataproc, Google Kubernetes Engine VM 사용에만 적용됩니다.
  • f1-micro 또는 g1-small 머신 유형, 선점형 VM, 단독 테넌트 노드 또는 Cloud SQL 및 Cloud Dataflow처럼 위에 나열되지 않은 기타 서비스에는 예약이 적용되지 않습니다.
  • 예약당 최대 1,000대의 VM 인스턴스를 예약할 수 있습니다.
  • 예약하는 리소스에 충분한 할당량이 프로젝트에 있어야 합니다. 예약이 성공하면 해당 리소스의 할당량에 맞게 요금이 청구됩니다.
  • 예약이 생성될 때 리소스가 할당됩니다. 요청 시점에 영역에 리소스가 충분하지 않으면 용량 부족 오류로 예약이 실패합니다.
  • 약정 사용 할인과 결합하는 경우:
    • GPU 및 로컬 SSD에 약정 사용 할인 가격을 적용하려면 약정을 구매할 때 예약을 생성해야 합니다.
    • 예약이 약정에 연결되어 있으면 예약을 삭제할 수 없습니다.
    • K80 GPU에 대한 1년 약정만 구매할 수 있습니다.
  • 약정 사용 할인에 연결되지 않은 예약은 기간 제한 없이 유지할 수 있지만, 일반 인스턴스와 마찬가지로 최소 1분 요금이 적용됩니다.

예약의 작동 원리

필요한 VM 인스턴스를 예약하기 위해 예약을 생성합니다. 예약이 생성되면 예약을 통해 항상 해당 리소스를 사용할 수 있습니다. 예약 생성 과정에서 예약 사용 방식을 선택할 수 있습니다. 예를 들어 예약의 속성(기본 동작)과 일치하는 새 인스턴스 또는 기존 인스턴스에 예약이 자동으로 적용되도록 선택하거나, 특정 VM 인스턴스만 예약을 사용할 수 있도록 지정할 수 있습니다.

어떤 경우든 VM 인스턴스의 속성이 예약의 속성과 정확하게 일치할 때 하나의 VM 인스턴스가 하나의 예약만 사용할 수 있습니다. 구체적으로 말해서 인스턴스가 예약을 사용하려면 다음과 같은 예약의 속성과 인스턴스가 일치해야 합니다.

  • 영역
  • 머신 유형(코어 및 메모리)
  • 최소 CPU 플랫폼
  • GPU 유형
  • GPU 수
  • 로컬 SSD 인터페이스
  • 로컬 SSD 크기

VM 인스턴스가 예약의 속성과 일치할 때 기본 동작은 별도로 지정하지 않는 한 기존 VM 인스턴스와 새로운 VM 인스턴스가 모두 자동으로 예약을 사용하는 것입니다. 예를 들어, 기본적으로 10개의 custom-8-10240 인스턴스에 대한 예약을 생성하는 경우에 이미 일치하는 custom-8-10240 인스턴스가 5개 있으면 이 5개의 인스턴스가 5개의 예약을 사용합니다. 일치하는 인스턴스 3개를 추가로 생성하면 다른 3개의 예약이 사용됩니다.

예약 및 인스턴스를 생성할 때 특정 옵션을 지정하여 이러한 기본 동작을 재정의할 수 있습니다.

  • 자동으로 사용되지 않을 예약을 생성하려면 specificReservationRequired 옵션을 사용하세요. 그러면 이러한 예약은 인스턴스 생성 시 예약을 명시적으로 지정한 경우에만 사용할 수 있습니다.
  • 인스턴스가 예약을 사용하도록 지정하려면 인스턴스를 생성할 때 또는 인스턴스 템플릿에서 reservationAffinity 옵션을 사용하세요. 인스턴스가 일치하는 예약을 자동으로 사용하거나, 일치하는 예약을 자동으로 사용하지 않거나, 특정 예약을 사용하도록 지정할 수 있습니다.

예약을 사용 중인 인스턴스를 중지하거나 삭제하면 해당 인스턴스가 더 이상 예약에 포함되지 않으며 예약된 리소스는 다시 사용 가능한 상태가 됩니다.

예약은 삭제했지만 예약된 리소스를 사용 중인 인스턴스를 삭제하지 않으면 인스턴스가 유지되고 평소처럼 요금이 청구됩니다.

예약 생성

콘솔, gcloud 명령줄 도구 또는 API를 사용하여 VM 인스턴스의 예약을 생성합니다. 기본적으로 예약의 속성과 일치하는 VM 인스턴스는 자동으로 해당 예약을 사용합니다. 자동으로 사용되지 않는 예약을 생성하려면 specificReservationRequired 옵션을 사용하세요.

리소스를 예약하기 위해 약정을 생성할 필요는 없습니다. 하지만 GPU 및 로컬 SSD에 약정 사용 할인 요금을 적용하려면 약정을 구매하는 동시에 해당 리소스를 포함하는 예약을 생성해야 합니다. 자세한 내용은 예약과 약정 사용 할인의 결합을 참조하세요.

Console

  1. Google Cloud Platform Console의 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인 페이지로 이동

  2. 상위 약정이 없는 독립형 예약을 생성하려면 예약 만들기를 클릭합니다.

  3. 예약 이름을 지정합니다.

  4. 이름으로 이 예약을 명시적으로 타겟팅하는 일치하는 인스턴스를 생성할 때 이 예약의 리소스만 사용하려면 VM 인스턴스와 함께 사용에서 특정 예약 선택을 선택합니다.

  5. 리소스를 예약할 리전 및 영역을 선택합니다.

  6. 예약할 VM 인스턴스 수를 지정합니다.

  7. 각 인스턴스별로 예약할 리소스를 지정합니다.

    • 인스턴스 템플릿이 있으면 인스턴스 템플릿 사용을 클릭하고 목록에서 인스턴스 템플릿을 선택합니다.
    • 또는 머신 유형 지정을 클릭합니다.
      1. 사전 정의된 머신 유형의 경우 드롭다운 목록에서 원하는 항목을 선택합니다.
      2. 최소 CPU 플랫폼을 포함한 커스텀 머신 유형의 경우 GPU를 추가하려면 맞춤설정을 클릭하여 원하는 대로 선택합니다.
      3. 필요한 경우 각 인스턴스에 추가할 로컬 SSD 디스크 수를 지정하고 사용할 인터페이스 유형을 지정합니다.
  8. 만들기 버튼을 클릭하여 예약을 생성합니다.

gcloud

gcloud compute reservations create 명령어를 사용하여 새 예약을 만듭니다.

gcloud compute reservations create [RESERVATION_NAME] \
    --machine-type=[MACHINE_TYPE] \
    --min-cpu-platform [MINIMUM_CPU_PLATFORM] \
    --vm-count=[NUMBER_OF_VMS] \
    --accelerator=count=[NUMBER_OF_ACCELERATORS],type=[ACCELERATOR_TYPE] \
    --local-ssd=size=[SIZE_IN_GB],interface=[INTERFACE] \
    --require-specific-reservation \
    --zone=[ZONE]

각 항목의 의미는 다음과 같습니다.

  • [RESERVATION_NAME]은 생성할 예약의 이름입니다.
  • [MACHINE_TYPE]머신 유형입니다. 예를 들면 n1-standard-1입니다. 커스텀 머신 유형에는 custom-[CPUS]-[MEMORY] 형식을 사용하며 각 항목의 의미는 다음과 같습니다.
    • [CPUS]는 vCPU의 수입니다.
    • [MEMORY]는 이 인스턴스의 총 메모리입니다. 메모리는 256MB의 배수여야 하며 MB 단위로 제공되어야 합니다. 예를 들어 5GB의 메모리는 5,120MB입니다(custom-4-5120). 제한사항의 전체 목록은 커스텀 머신 유형의 사양을 참조하세요.
  • [MINIMUM_CPU_PLATFORM]은 각 인스턴스에 사용할 최소 CPU입니다.
  • [NUMBER_OF_VMS]는 예약할 VM 인스턴스의 수입니다.
  • [NUMBER_OF_ACCELERATORS]는 인스턴스당 추가할 GPU의 수입니다.
  • [ACCELERATOR_TYPE]액셀러레이터의 유형입니다.
  • [SIZE_IN_GB]는 각 인스턴스에 연결할 로컬 SSD의 GB 크기입니다. 이 크기는 375의 배수여야 합니다.
  • [INTERFACE]는 각 인스턴스에 사용할 로컬 SSD의 인터페이스 유형입니다. scsinvme가 각 인스턴스에 유효한 옵션입니다.
  • [ZONE]은 리소스를 예약할 영역입니다.

선택적으로 --require-specific-reservation 플래그를 추가하여 이 예약을 명시적으로 타겟팅하는 VM 인스턴스만 이 예약을 사용할 수 있음을 나타낼 수 있습니다. 예약된 리소스의 사용을 위한 구성 옵션에 대한 자세한 내용은 예약의 작동 원리를 참조하세요.

예를 들어 us-central1-a에서 명시적으로 타겟팅된 경우에만 사용할 수 있는 예약을 생성하려면 다음과 유사한 명령어를 사용합니다. 이 예시에서는 각각 8개의 Intel Haswell(또는 최신) vCPU, 10GB의 메모리, 2개의 V100 GPU, 375GB의 로컬 SSD가 있는 10대의 커스텀 머신을 예약합니다.

gcloud compute reservations create my-reservation \
    --machine-type=custom-8-10240 \
    --min-cpu-platform "Intel Haswell" \
    --vm-count=10 \
    --accelerator=count=2,type=nvidia-tesla-v100 \
    --local-ssd=size=375,interface=scsi \
    --require-specific-reservation \
    --zone us-central1-c

사용 가능한 모든 플래그의 목록을 보려면 gcloud compute reservations create 참조 문서를 확인하세요.

API

API에서 reservations.insert 메서드에 대한 POST 요청을 작성합니다. 요청 본문에 다음 매개변수를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations

{
  "name":"[RESERVATION_NAME]",
  "specificReservation":{
    "count":"[NUMBER_OF_VMS]",
    "instanceProperties":{
      "machineType":"[MACHINE_TYPE]",
      "minCpuPlatform": "[MINIMUM_CPU_PLATFORM]",
      "guestAccelerators":[
        {
          "acceleratorCount":"[NUMBER_OF_ACCELERATORS]",
          "acceleratorType":"[ACCELERATOR_TYPE]"
        }
      ],
      "localSsds":[
        {
          "diskSizeGb":"[SIZE_IN_GB]",
          "interface":"[INTERFACE]"
        }
      ]
    }
  }
}

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID는 요청의 프로젝트 ID입니다.
  • [ZONE]은 리소스를 예약할 영역입니다.
  • [RESERVATION_NAME]은 생성할 예약의 이름입니다.
  • [NUMBER_OF_VMS]는 예약할 VM 인스턴스의 수입니다.
  • [MACHINE_TYPE]은 사전 정의된 또는 커스텀 머신 유형입니다. 예를 들면 n1-standard-1입니다. 커스텀 머신 유형에는 custom-[CPUS]-[MEMORY] 형식을 사용하며 각 항목의 의미는 다음과 같습니다.
    • [CPUS]는 vCPU의 수입니다.
    • [MEMORY]는 이 인스턴스의 총 메모리입니다. 메모리는 256MB의 배수여야 하며 MB 단위로 제공되어야 합니다. 예를 들어 5GB의 메모리는 5,120MB입니다(custom-4-5120). 제한사항의 전체 목록은 커스텀 머신 유형의 사양을 참조하세요.
  • [MINIMUM_CPU_PLATFORM]은 각 인스턴스에 사용할 최소 CPU입니다.
  • [NUMBER_OF_ACCELERATORS]는 인스턴스당 추가할 GPU의 수입니다.
  • [ACCELERATOR_TYPE]액셀러레이터의 유형입니다.
  • [SIZE_IN_GB]는 각 인스턴스에 연결할 로컬 SSD의 GB 크기입니다. 이 크기는 375의 배수여야 합니다.
  • [INTERFACE]는 각 인스턴스에 사용할 로컬 SSD의 인터페이스 유형입니다. scsinvme가 각 인스턴스에 유효한 옵션입니다.

선택적으로 specificReservationRequired 부울 필드를 포함하여, 이름을 통해 이 예약을 명시적으로 타겟팅하는 VM 인스턴스만 이 예약을 사용할 수 있음을 나타낼 수 있습니다. 예약에서 인스턴스 사용을 위한 구성 옵션에 대한 자세한 내용은 예약의 작동 원리를 참조하세요.

예를 들어 us-central1-a에서 명시적으로 타겟팅된 경우에만 사용할 수 있는 예약을 생성하려면 다음과 유사한 명령어를 사용합니다. 이 예시에서는 각각 8개의 Intel Haswell(또는 최신) vCPU, 10GB의 메모리, 2개의 V100 GPU, 375GB의 로컬 SSD가 있는 10대의 커스텀 머신을 예약합니다.

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

{
  "name": "reservation-1",
  "specificReservation":
  {
    "count": "10",
    "instanceProperties":
    {
      "machineType": "custom-8-10240",
      "minCpuPlatform": "Intel Haswell",
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-v100"
        }
      ],
      "localSsds":
      [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    }
  },
  "specificReservationRequired": true
}

예약된 인스턴스 사용

인스턴스를 생성할 때 인스턴스의 reservation affinity(예약 어피니티) 플래그를 설정하여 인스턴스가 사용 가능한 일치하는 예약을 사용하거나(기본값), 특정 예약을 사용하거나, 예약을 아예 사용하지 않도록 선택할 수 있습니다. 인스턴스가 특정 예약을 사용하려면 그 예약이 specific reservation required(특정 예약 필요) 플래그를 적절하게 사용하여 생성되어야 합니다.

예약을 사용하려면 생성된 인스턴스가 해당 예약의 인스턴스 속성과 일치해야 합니다. 자세한 내용은 예약 작동 방식을 참조하세요.

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

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

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

Console

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

    1. GCP Console에서 약정 사용 할인 페이지로 이동합니다.

      약정 사용 할인 페이지로 이동

    2. 상위 약정이 없는 독립형 예약을 생성하려면 예약 만들기를 클릭합니다.

    3. 예약 이름을 지정합니다(예: reservation-01).

    4. 일치하는 인스턴스에서 이 예약을 자동으로 사용할 수 있도록 VM 인스턴스와 함께 사용에서 예약 자동 사용을 선택합니다.

    5. 리소스를 예약할 리전 및 영역을 선택합니다.

    6. 예약할 VM 인스턴스 수를 지정합니다.

    7. 각 인스턴스에 포함할 리소스를 지정합니다. 예를 들면 다음과 같습니다.

      • vCPU 수
      • 최소 CPU 플랫폼
      • 메모리 양
      • GPU
      • 로컬 SSD(필요한 경우)
    8. 만들기 버튼을 클릭하여 예약을 생성합니다.

  2. 모든 공개 예약을 타겟팅하고 영역, 머신 유형(vCPU 개수 및 메모리 양), 최소 CPU 플랫폼, GPU 크기 및 유형, 로컬 SSD 인터페이스 및 크기를 비롯한 reservation-01의 인스턴스 속성과 일치하는 VM 인스턴스를 생성합니다.

    1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. 프로젝트를 선택하고 계속을 클릭합니다.
    3. 인스턴스 만들기 버튼을 클릭합니다.
    4. 인스턴스 이름을 지정합니다.
    5. reservation-01의 속성과 일치하는 머신 유형을 지정합니다. 예를 들어 예약에 최소 CPU 플랫폼 또는 GPU를 지정한 경우 예약을 사용하려면 이 인스턴스를 해당 예약과 일치하도록 맞춤설정해야 합니다.
    6. 예약에 로컬 SSD가 포함된 경우 디스크 아래의 새 디스크 추가를 클릭하여 예약의 로컬 SSD 인터페이스 및 크기와 일치하는 로컬 SSD를 추가합니다.
    7. 예약 아래의 관리에서 생성된 예약 자동 사용을 선택합니다.
    8. 만들기를 클릭합니다.

gcloud

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

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

    gcloud compute instances create instance-1 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --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":"n1-standard-32",
          "minCpuPlatform": "Intel Haswell",
        }
      },
      "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/n1-standard-32",
      "minCpuPlatform": "Intel Haswell",
      "reservationAffinity":
      {
        "consumeReservationType": "ANY_RESERVATION"
      },
      ...
    }
    

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

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

예약을 생성할 때 예약이 자동으로 사용되지 않도록 지정합니다. 그런 다음 해당 예약을 명시적으로 타겟팅하고 예약의 속성과 일치하는 VM을 생성합니다.

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

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

Console

  1. 예약을 생성하고, 이름으로 이 예약을 명시적으로 타겟팅하는 인스턴스에서만 이 예약의 리소스를 사용할 수 있도록 합니다.

    1. GCP Console에서 약정 사용 할인 페이지로 이동합니다.

      약정 사용 할인 페이지로 이동

    2. 상위 약정이 없는 독립형 예약을 생성하려면 예약 만들기를 클릭합니다.

    3. 예약 이름을 지정합니다(예: reservation-02).

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

    5. 리소스를 예약할 리전 및 영역을 선택합니다.

    6. 예약할 VM 인스턴스 수를 지정합니다.

    7. 각 인스턴스에 포함할 리소스를 지정합니다. 예를 들면 다음과 같습니다.

      • vCPU 수
      • 최소 CPU 플랫폼
      • 메모리 양
      • GPU
      • 로컬 SSD
    8. 만들기 버튼을 클릭하여 예약을 생성합니다.

  2. 이름을 통해 특정 예약을 타겟팅하는 VM 인스턴스를 생성합니다.

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

    1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. 프로젝트를 선택하고 계속을 클릭합니다.
    3. 인스턴스 만들기 버튼을 클릭합니다.
    4. 인스턴스 이름을 지정합니다.
    5. reservation-01의 속성과 일치하는 머신 유형을 지정합니다. 예를 들어 예약에 최소 CPU 플랫폼을 지정한 경우 예약을 사용하려면 이 인스턴스를 해당 예약과 일치하도록 맞춤설정해야 합니다.
    6. 예약에 로컬 SSD가 포함된 경우 디스크 아래의 새 디스크 추가를 클릭하여 예약의 로컬 SSD 인터페이스 및 크기와 일치하는 로컬 SSD를 추가합니다.
    7. 예약 아래의 관리에서 일치하는 속성이 포함된 사용 가능한 예약(예: reservation-02)을 선택합니다.
    8. 만들기를 클릭하여 인스턴스를 만듭니다.

gcloud

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

    gcloud compute reservations create reservation-02 \
        --machine-type=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --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=n1-standard-32 \
        --min-cpu-platform "Intel Skylake" \
        --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":"n1-standard-32",
          "minCpuPlatform": "Intel Haswell",
        }
      },
      "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/n1-standard-32",
      "minCpuPlatform": "Intel Haswell",
      "reservationAffinity":
      {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values":
        ["reservation-02"
        ]
      },
      ...
    }

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

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

Console

  1. 예약에서 명시적으로 사용하지 않는 인스턴스를 만듭니다.
    1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. 인스턴스 만들기 버튼을 클릭합니다.
    3. 평소처럼 인스턴스를 만듭니다.
    4. 예약 아래의 관리에서 사용 안함을 선택하여 이 인스턴스가 기존 예약에서 사용되지 않도록 합니다.
    5. 만들기를 클릭하여 인스턴스를 만듭니다.

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/n1-standard-16",
  "name": "instance-3",
  "reservationAffinity":
  {
    "consumeReservationType": "NO_RESERVATION"
  },
  ...
}

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

예약 사용 보장

예약된 리소스를 사용할 수 없는 경우 예약 속성을 검토하세요. 인스턴스의 속성이 예약의 속성과 일치하는지 테스트하려면 특정 예약을 생성한 다음 해당 특정 예약을 타겟팅하는 인스턴스를 만듭니다.

예약 속성 확인

예약의 인스턴스 속성은 인스턴스 만들기 명령어의 속성과 일치해야 합니다. 인증 방법은 다음과 같습니다.

  1. 특히 다음 예약의 속성을 확인합니다.

    • zone
    • specificReservationRequired
      • true로 설정된 경우, 인스턴스 만들기 명령어는 이름으로 이 예약을 타겟팅해야 합니다.
    • machineType
    • guestAccelerators.acceleratorType
    • guestAccelerators.acceleratorCount
    • minCpuPlatform
    • localSsds.diskSizeGb
    • localSsds.interface
  2. 이러한 속성과 일치하는 인스턴스를 만듭니다.

  3. 인스턴스를 설명하여 인스턴스의 속성이 예약의 속성과 일치하는지 확인합니다. 예를 들어 gcloud 도구를 통해 instances describe 명령어를 사용합니다.

  4. 예약을 설명하여 inUseCount가 증가되었는지 확인합니다.

    • inUseCount가 변경되지 않았다면 속성이 일치하지 않는 것입니다.
    • inUseCount가 증가했다면 예약이 사용되고 있는 것입니다.

특정 예약을 타겟팅합니다.

특정 예약을 타겟팅하는 인스턴스를 생성하려는 경우 인스턴스가 예약의 속성과 일치하지 않으면 인스턴스를 생성할 수 없습니다. 이 방법을 사용하여 인스턴스 속성이 올바른지 확인하세요.

  1. specificReservationRequired 옵션으로 예약을 생성합니다.
  2. 예약의 인스턴스 속성과 명시적으로 일치하고 예약 어피니티 속성을 통해 이름으로 예약을 타겟팅하는 인스턴스를 생성합니다.
    • 인스턴스 속성이 일치하지 않으면 오류가 표시됩니다.
    • 인스턴스 속성이 일치하면 예약이 사용되고 있는 것입니다.

예약 나열 및 설명

콘솔, gcloud 도구 또는 API를 사용하여 예약의 세부정보를 나열하고 확인합니다.

Console

  1. GCP Console에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인 페이지로 이동

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

예약 목록에는 각 예약에 대한 세부정보가 포함됩니다. 사용한 머신(합계) 열을 사용하면 각 예약의 사용률을 결정할 수 있습니다.

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-05
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-05
specificReservation:
  count: '50'
  inUseCount: '25'
  instanceProperties:
    guestAccelerators:
    - acceleratorCount: 1
      acceleratorType: nvidia-tesla-k80
    localSsds:
    - diskSizeGb: '375'
      interface: SCSI
    machineType: n1-standard-1
    minCpuPlatform: Any CPU Platform
specificReservationRequired: false
status: READY
zone: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d    

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

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

gcloud compute instances create my-instance \
    --accelerator=type=nvidia-tesla-k80,count=1 \
    --maintenance-policy terminate \
    --local-ssd=interface=SCSI \
    --machine-type n1-standard-1 \
    --zone us-east1-d 

API

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

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

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://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d/reservations/reservation-05",
  "zone": "https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-east1-d",
  "name": "reservation-05",
  "specificReservationRequired": false,
  "status": "READY",
  "kind": "compute#reservation",
  "specificReservation": {
    "instanceProperties": {
      "machineType": "n1-standard-1",
      "guestAccelerators": [
        {
          "acceleratorType": "nvidia-tesla-k80",
          "acceleratorCount": 1
        }
      ],
      "minCpuPlatform": "Any CPU Platform",
      "localSsds": [
        {
          "diskSizeGb": "375",
          "interface": "SCSI"
        }
      ]
    },
    "count": "50",
    "inUseCount": "25"
  }
}

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

예약 수정

예약이 약정에 연결되어 있지 않으면 예약의 크기를 조정하거나 예약을 삭제할 수 있습니다.

예약의 크기 조정

예약이 약정에 연결되어 있지 않으면 gcloud 도구 또는 API를 사용하여 예약의 VM 수를 조정할 수 있습니다.

gcloud

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

2대의 VM에 대한 예약을 생성합니다.

gcloud compute reservations create reservation-01 \
    --machine-type=n1-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/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]/resize

{"specificSkuCount": "10"}

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

예약 삭제

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

Console

  1. GCP Console에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인 페이지로 이동

  2. 예약을 클릭하여 예약 목록을 표시합니다.
  3. 삭제할 각 예약 옆의 체크박스를 선택합니다.

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

gcloud

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

gcloud compute reservations delete [RESERVATION_NAME] --zone [ZONE]

API

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

DELETE https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/reservations/[RESERVATION_NAME]

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

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

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

기본적으로 예약을 생성하면 코어 및 메모리에 대해 적용 가능한 약정 사용 할인이 자동으로 VM 인스턴스에 적용됩니다. 하지만 GPU 및 로컬 SSD에 약정 사용 할인 요금을 적용하려면 약정을 구매할 때 해당 리소스에 대한 예약을 생성해야 합니다.

약정을 구매한 후에는 취소할 수 없습니다. 자세한 내용은 약정 사용 할인을 참조하세요.

GPU 또는 로컬 SSD에 대한 약정 구매

GPU 또는 로컬 SSD의 약정을 구매하려면 다음을 따르세요.

  • 일반 용도 N1 약정을 구매해야 합니다. GPU는 N1 머신 유형에서만 지원됩니다.
  • 약정을 구매하는 동시에 GPU 또는 로컬 SSD를 포함하는 예약을 생성해야 합니다.
  • vCPU나 메모리를 약정할 필요는 없습니다.

특정 GPU 유형에 대한 약정을 구매해야 합니다. 예를 들어 Tesla P100 또는 Tesla V100을 구매할 수 있지만 Tesla P100 GPU의 약정을 구매하여 이를 다른 GPU 유형에 적용할 수는 없습니다.

예약하는 GPU 및 로컬 SSD의 크기는 약정하는 크기와 동일해야 합니다. 예를 들어 4개의 V100 GPU를 예약하려는 경우 4개의 V100 GPU도 약정해야 합니다. 하지만 예약하는 vCPU 및 메모리의 크기는 약정하는 크기보다 크거나 작을 수 있습니다.

GPU 또는 로컬 SSD만 약정하려면 vCPU 및 메모리 약정을 0으로 지정하면 됩니다. 하지만 약정에 연결한 예약에 약정과 동일한 GPU 및 로컬 SSD는 물론 예약할 머신 유형(vCPU 및 메모리 포함)이 포함되어야 합니다.

콘솔, gcloud 도구 또는 API를 사용하여 연결된 예약이 있는 약정을 구매하세요.

Console

  1. GCP Console에서 약정 사용 할인 페이지로 이동합니다.

    약정 사용 할인 페이지로 이동

  2. 약정 구매를 클릭하여 새 약정을 구매합니다.
  3. 약정의 이름을 지정하고 적용할 리전을 선택합니다.
  4. 약정 유형에 일반 용도를 선택합니다.
  5. 약정 기간을 1년 또는 3년으로 선택합니다.
  6. 약정의 입력 모드를 선택합니다.

    • (권장사항) 커스텀 입력을 사용하면 vCPU 개수와 메모리 양을 맞춤설정할 수 있습니다.

    • 기본 입력을 사용하면 vCPU 수를 선택할 수 있으며, Compute Engine이 vCPU 수에 맞는 메모리 양을 자동으로 채웁니다.

  7. 구매할 vCPU 수량과 메모리 크기를 입력합니다. vCPU당 메모리 크기는 선택하는 할인 유형에 따라 특정한 비율이어야 합니다. 표준 약정 사용 할인의 경우 vCPU당 0.9~6.5GB를 사용하세요. 총 메모리는 256MB의 배수여야 합니다.

    vCPUs 및 메모리 약정 없이 GPU 또는 로컬 SSD만 약정하고 예약하려면 vCPU 및 메모리 약정 수량을 0으로 지정하면 됩니다.

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

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

  10. 새 예약 추가를 클릭하여 GPU 및 로컬 SSD를 사용하는 인스턴스에 하나 이상의 예약을 생성합니다.

    1. 예약 이름을 지정합니다.
    2. VM 인스턴스와 함께 사용에서 다음 안내를 따르세요.
      • 이름을 통해 이 예약을 명시적으로 타겟팅하는 일치하는 인스턴스를 만들 때 이 예약 리소스만 사용하려면 특정 예약 선택을 선택합니다.
      • 일치하는 인스턴스에서 이 예약을 자동으로 사용하도록 하려면 예약 자동 사용을 선택합니다.
    3. 리소스를 예약할 리전 및 영역을 선택합니다.
    4. 예약할 VM 인스턴스 수를 지정합니다.
    5. 각 인스턴스별로 예약할 리소스를 지정합니다.
      • 인스턴스 템플릿이 있으면 인스턴스 템플릿 사용을 클릭하고 목록에서 인스턴스 템플릿을 선택합니다.
      • 또는 머신 유형 지정을 클릭합니다.
        1. 사전 정의된 머신 유형의 경우 드롭다운 메뉴에서 원하는 항목을 선택합니다.
        2. 최소 CPU 플랫폼을 포함한 커스텀 머신 유형의 경우 GPU를 추가하려면 맞춤설정을 클릭하여 원하는 대로 선택합니다.
        3. 필요한 경우 각 인스턴스에 추가할 로컬 SSD 디스크 수를 지정하고 사용할 인터페이스 유형을 지정합니다.
    6. 완료 버튼을 클릭하여 예약을 생성합니다.
  11. 구매 버튼을 클릭하여 약정을 구매합니다.

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

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-16 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

vCPUs 및 메모리 약정 없이 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-1 \
    --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_FILE]에는 예약 속성이 포함됩니다.

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

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

API

regionCommitments.insert API를 사용하고 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"
    }
  ]
}

vCPUs 및 메모리 약정 없이 GPU 또는 로컬 SSD만 약정하고 예약하려면 VCPUMEMORY 약정 수량을 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이 연결된 예약을 자동으로 삭제합니다.

약정된 예약을 통해 GPU 또는 로컬 SSD를 전송해야 하는 경우 약정에 연결된 예약 수정을 참조하세요.

약정에 연결된 예약 수정

약정에 GPU 또는 로컬 SSD가 있는 예약이 하나 이상 있는 경우 gcloud 도구 또는 API를 사용하여 이러한 예약 간에 GPU 또는 로컬 SSD를 이동할 수 있습니다. 예를 들어 하나의 예약에서 GPU를 새로운 다른 예약으로 이동할 수 있습니다.

제한사항:

  • 두 개의 예약 간에만 리소스를 이동할 수 있으며 이 경우 하나는 소스 예약이고 다른 하나는 대상입니다. 소스 예약은 이미 존재해야 하며 대상은 기존 예약 또는 새로운 예약일 수 있습니다.
  • 소스 및 대상 예약은 같은 영역에 있어야 합니다.
  • 기존 예약의 리소스 속성을 수정할 수 없으며, 하나의 예약에서 다른 예약으로 기존 리소스를 이동할 수만 있습니다.
  • GPU 및 로컬 SSD의 총 크기는 일정하게 유지되어야 합니다.
  • 요청당 100대의 VM만 변경할 수 있습니다. 더 많은 수를 업데이트하려면 API를 여러 번 호출하거나 Google Cloud 지원에 문의하세요.
  • vCPU 또는 메모리를 전송하거나 연결된 예약의 다른 속성을 수정할 수 없습니다.

gcloud

gcloud compute commitments update-reservations 명령어를 사용합니다.

하나의 예약으로 약정을 생성합니다.

  • res-1에 4개의 n1-standard-1 인스턴스가 있고 각 인스턴스에 P100 GPU가 하나씩 있습니다(4개의 vCPU 및 4개의 P100 GPU). 예약된 총 리소스에는 4개의 P100 GPU가 포함됩니다.
gcloud 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-1
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

약정을 업데이트하여 리소스를 res-1에서 새로운 다른 예약인 res-2로 이동합니다. 예를 들면 다음과 같습니다.

  • res-1을 수정하여 각각 2개의 P100 GPU가 있는 2개의 n1-standard-1 인스턴스를 갖도록 합니다(2개의 vCPU 및 2개의 P100 GPU).
  • res-2를 추가하여 각각 1개의 P100 GPU가 있는 2개의 n1-standard-2 인스턴스를 갖도록 합니다(4개의 vCPU 및 2개의 P100 GPU).

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

gcloud 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: 2
  machine_type: n1-standard-1
  accelerator:
  - count: 1
    type: nvidia-tesla-p100
- reservation: res-2
  reservation_zone: asia-east1-a
  require_specific_reservation: true
  vm_count: 2
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-p100

API

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

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

  • res-1에는 각각 1개의 nvidia-tesla-p100가 있는 4개의 n1-standard-1 인스턴스가 있습니다(4개의 vCPU 및 4개의 P100 GPU).

이 예시에서 예약된 총 리소스에는 4개의 P100 GPU가 포함됩니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-central1/commitments

{
  "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-1"
        }
      },
      "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로 이동합니다. 예를 들면 다음과 같습니다.

  • res-1을 수정하여 각각 2개의 P100 GPU가 있는 2개의 n1-standard-1 인스턴스를 갖도록 합니다(2개의 vCPU 및 2개의 P100 GPU).
  • res-2를 추가하여 각각 1개의 P100 GPU가 있는 2개의 n1-standard-2 인스턴스를 갖도록 합니다(4개의 vCPU 및 2개의 P100 GPU).

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

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-central1/commitments/my-commitment-with-reservation/updateReservations

{
  "reservations":
  [
    {
      "name": "res-1",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-1"
        }
      },
      "specificReservationRequired": true,
      "zone": "asia-east1-a"
    },
    {
      "name": "res-2",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-p100"
            }
          ],
          "machineType": "n1-standard-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-a/reservations/my-reservation입니다.
총 예약 리소스 com.google.cloud/services/compute-engine/Reservation[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-a/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/VmimageN1StandardRam,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/VmimageN1StandardRam,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/ReservationN1StandardRam,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
...

예약 청구

예약에는 예약하는 리소스와 동일한 요금이 청구됩니다. 일반 VM과 마찬가지로 지속 사용 할인, 약정 사용 할인, 커스텀 가격이 적용됩니다.

다음과 같은 예시를 살펴보겠습니다.

  • us-central1에 3개의 vCPU 약정이 있습니다.
  • us-central1-a에서 5개의 vCPU를 실행합니다.
  • us-central1-a에 10개의 vCPU 예약이 있습니다.

일부 약정 사용 할인이 적용된 예약의 예시

다음과 같이 요금이 청구됩니다.

적용 방식 vCPU 개수
약정 사용 할인 가격 3
주문형 가격(2개 vCPU 사용한 예약 + 5개 vCPU 사용하지 않은 예약) 7

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서