予約の使用のトラブルシューティング


このページでは、Compute Engine ゾーンリソースの予約の使用に関する問題の解決方法について説明します。

予約の使用状況トラッキングに関する問題

問題: 予約の詳細の表示や、予約の消費のモニタリングを行い、予約済みの VM がどの程度の数が使用されているかを確認し、この数の時間経過に伴う変化をモニタリングできるが、予約を使用している VM がどれかを直接表示することができない。

解決策: 特定の予約を対象とする VM を正常に作成できる場合、VM のアフィニティ プロパティ(reservationAffinity)で指定された予約を VM は使用しています。それ以外の場合は、プロパティが一致しないか、使用可能な予約済みリソースがないため、VM の作成に失敗します。

特定の予約を対象とする VM を作成して、一致する予約を自動的に使用するように正しく構成されていることをテストしてから、一致する予約を使用するように VM を作成することもできます。

VM が予約を使用しない問題

VM が予約を使用できない場合は、次の 1 つ以上の問題が発生している可能性があります。

  • 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 は移行の名前です。

      この出力を利用できるようにします。

    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 フィールドの値が減少しているかどうかを確認します。値が減少しなかった場合、停止、一時停止、削除のオペレーションが完了する間に、1 つ以上の VM が予約の使用を開始しました。

VM が意図せずに予約を使用している

問題: 自動的に使用される予約(デフォルト)を作成すると、VM がこれらの予約を意図せずに使用することがあります。

解決策: 予約を使用する VM をコントロールするには、次の操作を行います。

リソース割り当てが超過した

問題: 特定のリソースの割り当てが超過したため、共有予約が活用されない。

共有予約には、割り当てに関する追加要件があります。オーナー プロジェクトには、コンシューマ プロジェクトが予約済みリソースを使用する場合に予約したリソースの 2 倍にあたる十分な割り当てが必要です。

解決策: 使用するリソースの追加の割り当てをリクエストします。