예약 사용 문제 해결


이 페이지에서는 Compute Engine 영역별 리소스의 예약 사용과 관련된 문제를 해결하는 방법을 보여줍니다.

예약 사용을 추적하기 어려움

문제: 예약 세부 정보를 열람하거나 예약 사용을 모니터링하여 예약된 VM 중 사용 중인 VM 수를 확인하고 시간 경과에 따른 변경 사항을 모니터링할 수는 있지만 어느 VM이 예약을 사용 중인지 직접 볼 수는 없습니다.

해결 방법: 특정 예약을 타겟팅하는 VM을 만들 수 있는 경우, VM에서는 VM의 어피니티 속성(reservationAffinity)에 지정된 예약을 사용합니다. 그렇지 않으면 속성이 일치하지 않거나 사용 가능한 예약된 리소스가 없기 때문에 VM이 실패합니다.

또한 개발자는 특정 예약을 타겟팅하는 VM을 만들어 일치하는 예약을 자동으로 사용하도록 올바르게 구성되었는지 테스트한 다음, VM을 만들어일치하는 예약을 사용할 수 있습니다.

예약을 사용하지 않는 VM 관련 문제

VM에서 예약을 사용할 수 없으면 다음 문제 중 하나 이상이 원인일 수 있습니다.

  • VM 속성이 예약 속성과 일치하지 않습니다.
  • VM의 예약 어피니티가 잘못되었습니다.
  • 일치하는 다른 VM에서 이미 예약을 완전히 사용하고 있습니다.
  • 리소스 할당량을 초과했습니다.

이 섹션에서는 이러한 각 문제를 식별하는 방법, 각 문제를 해결하는 방법, 예약 사용을 확인하는 방법을 설명합니다.

일치하지 않는 VM 속성

문제: VM에서 다른 VM 속성으로 예약을 사용할 수 없습니다.

이 문제를 식별하려면 다음 방법 중 하나를 선택합니다.

  • 예약 및 VM의 세부정보를 보고 VM 속성이 일치하는지 수동으로 확인합니다.

    1. gcloud compute reservations describe 명령어를 사용하여 VM에서 사용할 예약의 세부정보를 확인합니다.

      gcloud compute reservations describe RESERVATION_NAME --zone=ZONE
      

      다음을 바꿉니다.

      • RESERVATION_NAME: 예약 이름
      • ZONE은 인스턴스가 있는 영역입니다.

      이 출력을 사용 가능한 상태로 유지합니다.

    2. 예약 gcloud compute instances describe 명령어를 사용할 VM의 세부정보를 확인합니다.

      gcloud compute instances describe VM_NAME
      

      여기서 VM_NAME은 VM의 이름입니다.

      이 출력을 사용 가능한 상태로 유지합니다.

    3. VM 설명과 예약 설명 출력을 모두 사용하여 다음 속성이 일치하는지 확인합니다.

      • project
        • 예약이 여러 프로젝트와 공유되는 경우(예약에 shareType 속성이 SPECIFIC_PROJECTS로 설정된 경우) VM의 프로젝트는 예약이 있는 프로젝트 또는 shareSettings에 나열된 프로젝트와 일치할 수 있습니다.
      • zone
      • machineType
      • guestAccelerators.acceleratorType
      • guestAccelerators.acceleratorCount
      • minCpuPlatform
        • VM과 예약은 minCpuPlatform 구성이 정확하게 동일해야 합니다. 두 값 중 하나에 minCpuPlatform 값을 지정하면 두 속성 중 하나에 동일한 값이 있어야 합니다. 그렇지 않으면 예약과 VM에서 둘 다 속성을 생략해야 합니다. 예를 들어 VM을 만들 때 minCpuPlatform"Intel Broadwell"로 설정하면 예약 내 "Automatic"minCpuPlatform 값과 일치하지 않게 됩니다.
      • localSsds.interface
        • 예약과 VM에는 각 로컬 SSD에 일치하는 localSsds.interface 속성이 있는 동일한 수의 로컬 SSD가 있어야 합니다.
      • resourcePolicies*

      *예약이 압축 배치 정책을 지정하는 경우만 해당합니다.

  • 속성이 일치하지 않으면 오류를 반환하는 특정 예약을 타겟팅하는 VM을 만듭니다. 자세한 내용은 예약 사용 확인을 참조하세요.

해결 방법: 다음 중 하나를 수행하여 일치하지 않는 VM 속성을 업데이트합니다.

VM이 현재 예약을 사용하고 있는지 확인하려면 예약 사용 확인을 참조하세요.

VM과 예약의 속성은 일치하지만 VM에서 예약을 사용하지 않는 경우 다음 섹션으로 진행합니다.

VM에서 배치 정책 누락

문제: 예약의 압축 배치 정책을 지정하지 않고 VM이 예약을 사용하려고 시도합니다.

해결 방법: 단일 프로젝트 예약이 압축 배치 정책을 지정하는 경우 VM이 예약을 사용하기 위해 정확히 동일한 압축 배치 정책을 지정해야 합니다. 그렇지 않으면 VM이 예약을 사용할 수 없습니다.

VM이 압축 배치 정책을 지정하는 예약을 소비하는지 확인하기 위해 다음 중 하나를 시도합니다.

VM이 다른 압축 배치 정책 지정

문제: VM이 예약을 사용하려고 시도하지만 VM 및 예약에 지정된 압축 배치 정책이 일치하지 않습니다.

해결 방법: 단일 프로젝트 예약이 압축 배치 정책을 지정하는 경우 VM이 예약을 사용하기 위해 정확히 동일한 압축 배치 정책을 지정해야 합니다. 그렇지 않으면 VM이 예약을 사용할 수 없습니다.

이 문제를 해결하려면 다음 중 하나를 시도해 보세요.

  • 속성을 직접 지정하여 단일 프로젝트 예약을 만든 경우 새 VM을 만들 때 예약의 압축 배치 정책을 적용합니다.

  • 인스턴스 템플릿을 지정하여 단일 프로젝트 예약을 만들었으면 동일한 템플릿을 사용하여 VM을 만듭니다. 이 작업은 예약에 지정된 동일한 압축 배치 정책을 사용자가 생성하는 새로운 각각의 VM에 적용합니다.

VM의 예약 어피니티가 잘못됨

문제: VM의 예약 어피니티가 잘못 구성되었습니다. VM의 예약 어피니티는 VM에서 사용할 수 있는 예약을 제어합니다. VM의 예약 어피니티를 확인하려면 다음을 수행합니다.

  1. gcloud compute reservations describe 명령어를 사용하여 VM에서 사용할 예약의 세부정보를 확인합니다.

      gcloud compute reservations describe RESERVATION_NAME --zone=ZONE

    다음을 바꿉니다.

    • RESERVATION_NAME: 예약 이름
    • ZONE은 인스턴스가 있는 영역입니다.

    출력에서 specificReservationRequired 필드 값(true 또는 false)을 찾습니다.

  2. gcloud compute instances describe 명령어를 사용하여 VM의 세부정보를 확인합니다.

       gcloud compute instances describe VM_NAME

    여기서 VM_NAME을 VM 이름으로 바꿉니다.

    출력에서 다음과 유사한 reservationAffinity 필드를 찾습니다.

    ...
       reservationAffinity:
         consumeReservationType: RESERVATION_AFFINITY
         key: compute.googleapis.com/reservation-name
         values:
         - RESERVATION_NAME
       ...

해결 방법: 다음 허용 구성 중 하나를 사용하여 예약의 specificReservationRequired 필드와 호환되도록 VM의 reservationAffinity 속성을 업데이트합니다.

  1. 예약의 specificReservationRequired 필드가 true이면 VM의 reservationAffinity 속성이 다음과 일치해야 합니다.

    ...
      reservationAffinity:
        consumeReservationType: SPECIFIC_RESERVATION
        key: compute.googleapis.com/reservation-name
        values:
        - RESERVATION_NAME
      ...

    RESERVATION_NAME은 예약의 이름입니다.

  2. 예약의 specificReservationRequired 필드가 false이면 VM의 reservationAffinity 속성이 다음과 일치해야 합니다.

    ...
      reservationAffinity:
        consumeReservationType: ANY_RESERVATION
      ...

업데이트하려면 VM을 다시 시작해야 합니다. 업데이트 후 VM에서 예약을 사용하고 있는지 확인하려면 예약 사용 확인을 참조하세요.

VM의 예약 어피니티가 올바르게 구성되었지만 VM에서 예약을 사용하지 않는 경우 다음 섹션으로 진행합니다.

예약이 이미 완전히 사용되고 있음

문제: 현재 이 예약에 사용 중인 VM 수가 예약의 총 예약 VM 수와 일치합니다.

이 문제를 확인하려면 예약 세부정보를 확인하고 이 예약에 사용 중인 VM 수가 예약된 총 VM의 예약 수보다 적은지 확인합니다.

해결 방법: 다음 중 하나를 수행하여 예약에 사용할 수 있는 VM 수를 늘릴 수 있습니다.

VM이 현재 예약을 사용하고 있는지 확인하려면 예약 사용 확인을 참조하세요.

예약이 완전히 사용되지 않지만 VM에서 예약을 사용하지 않는 경우 특정 예약을 타겟팅하는 VM을 만들어 사용에 실패하면 오류를 반환하는 문제를 추가로 해결할 수 있습니다. 자세한 내용을 보려면 다음 섹션으로 진행하세요.

VM 중지 또는 삭제 후 VM 수가 복원되지 않음

문제: 예약을 사용 중인 VM을 중지, 일시중지 또는 삭제할 경우 작업이 완료되어야 VM이 더 이상 예약에 포함되지 않고 이전에 사용된 라소스가 다시 사용 가능한 상태가 됩니다.

해결 방법: VM에서 중지, 일시중지, 삭제 작업이 완료될 때까지 몇 분 정도 기다립니다. 그런 다음 중지, 일시중지 또는 삭제된 VM이 더 이상 예약에 포함되지 않는지 확인하려면 다음 방법 중 하나를 사용하여 예약에서 사용된 총 VM 수를 확인합니다.

  • 권장사항: 예약을 모니터링하고 예약 측정값에서 변경사항을 찾습니다.

  • 예약 세부정보를 확인하고 inUseCount 필드 값이 감소했는지 확인합니다. 값이 감소하지 않았다면 중지, 일시중지 또는 삭제 작업이 완료되는 동안 하나 이상의 VM에서 예약 사용을 시작한 것입니다.

VM에서 의도하지 않게 예약 사용

문제: 자동으로 사용되는 예약(기본값)을 만들면 VM이 의도치 않게 이러한 예약을 사용할 수 있습니다.

해결 방법: 다음을 수행하여 예약을 사용하는 VM을 제어할 수 있습니다.

리소스 할당량 초과

문제: 특정 리소스의 할당량이 초과되어 공유 예약이 사용되지 않습니다.

공유 예약에는 할당량과 관련된 추가 요구사항이 있습니다. 소유자 프로젝트에는 소비자 프로젝트에서 예약된 리소스를 사용하도록 예약된 리소스의 두 배에 해당하는 충분한 할당량이 있어야 합니다.

해결 방법: 사용할 리소스에 대한 추가 할당량을 요청합니다.