VM インスタンスのライフサイクルを管理する

このドキュメントでは、Google Distributed Cloud(GDC)エアギャップで仮想マシン(VM)インスタンスのライフサイクル全体にわたってシステム ステータスを確認する方法について説明します。

VM インスタンスは、そのライフサイクルの間に多くの状態に遷移します。VM を作成すると、VM を起動するためのリソースが Distributed Cloud によってプロビジョニングされます。次に、VM は開始状態に移行し、初回の起動に向けて準備が行われます。その後、起動して実行中とみなされます。実行中の VM は、ライフサイクル中に停止と再起動、一時停止と再開を繰り返すことがあります。

このドキュメントは、Distributed Cloud 環境で VM インスタンスのシステム ステータスを確認するプラットフォーム管理者グループまたはアプリケーション オペレーター グループのデベロッパーを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。

VM ステータスの定義

状態 定義
Pending VM はシステムによって承認され、割り当てを待機しています。
Provisioning VM に関連付けられたリソース(VirtualMachineDisk など)がプロビジョニングされ、準備されています。
Starting VM の実行準備が行われています。
Running VM が実行中である。
Stopping VM が停止中です。
Stopped VM が停止しており、起動する予定がない。
Paused VM は一時停止され、フリーズ状態になります。この状態は保持されます。VM にアクセスできない。
Terminating VM とそれに関連付けられたリソースが削除処理中です。
ErrorConfiguration VM に構成エラーがあります。無効な構成状態は、次の原因で発生する可能性があります。
MachineTypeNotFound - VM が参照する VM タイプが見つからないか、削除されています。
MachineDiskMisconfig - VM ディスクが正しく構成されていません。
InterfaceCreationFailed - ネットワーク インターフェースを作成できませんでした。
CrashLoopBackOff VM がクラッシュ ループにあり、再試行を待機しています。
PendingIPAllocation VM は、システムが IP アドレスを割り当てるのを待機しています。
Unknown VM の状態を取得できませんでした。通常、VM が実行されているホストとの通信エラーが原因です。
ErrorUnschedulable VM のスケジューリング中にエラーが発生しました。たとえば、リソース リクエストやスケジューリング制約が満たされていないか、サポートされていないことが原因です。
DiskError VM にアタッチされた 1 つ以上のディスクでエラーが発生しています。
WaitingForDisk VM は、アタッチされた 1 つ以上の VirtualMachineDisk の準備が完了するのを待機しています。
CrashLoopBackoff VM がなんらかの理由で一貫してクラッシュしている。

始める前に

gdcloud コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud CLI をダウンロード、インストール、構成していることを確認してください。Distributed Cloud のすべてのコマンドは gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境を必要とします。

kubeconfig ファイルのパスを取得する

Management API サーバーに対してコマンドを実行するには、次のリソースが必要です。

  1. Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。

  2. これらの手順では、MANAGEMENT_API_SERVER を Management API サーバーの kubeconfig ファイルのパスに置き換えます。

IAM ロールをリクエストする

IAM プロジェクト管理者に連絡して、プロジェクトに対する次のロールをリクエストしてください。

  • 仮想マシン プロジェクト管理者(project-vm-admin): プロジェクトの名前空間で VM を作成、変更、一覧表示、削除します。

  • プロジェクト閲覧者(project-viewer): プロジェクトの名前空間内のすべてのリソースを表示します。

すべての VM ロールは、VM が存在するプロジェクトの Namespace にバインドする必要があります。手順に沿ってアクセス権を確認します。

VM のステータスを確認する

各 VM は、そのステータスを VM のプロパティの一部として報告します。次のいずれかの理由で VM のステータスを確認します。

  • VM に問題がある場合。
  • 起動後に VM が実行されていることを確認する。
  • VM が Paused 状態または Stopped 状態であることを確認します。

VM を一覧表示してステータスを確認する

次の手順では、VM を一覧表示し、そのステータスを表示して、追加のステータス情報を取得する方法を示します。

  1. すべての VM を一覧表示し、それぞれのステータスを確認します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog
    

    次の表に従って、コード例の変数を独自の値に置き換えます。

    変数定義
    MANAGEMENT_API_SERVER Management API サーバーの kubeconfig ファイル。
    PROJECT VM が存在する GDC プロジェクト。

    出力例:

    NAME          STATUS                    AGE
    vm-1          Running                    1d
    vm-2          Stopped                    8d
    vm-3          ErrorConfiguration         1d
    
  2. 特定の VM のステータスに関する詳細情報を取得します。

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog VM_NAME \
      -o jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'
    

    次のように置き換えます。

    • MANAGEMENT_API_SERVER は、gdcloud auth login コマンドから取得した Management API サーバーの kubeconfig ファイルに置き換えます。
    • VM_NAME は、新しい VM の名前に置き換えます。
    • PROJECT は、VM が存在する GDC プロジェクトに置き換えます。

    Reason と Message の値を示す出力例:

    State: ErrorConfiguration
    Reason: MachineDiskNotFound
    Message: VirtualMachineDisk disk-1 in namespace project-1 does not exist.
    

    Reason と Message のフィールドが空になることもあります。これは、システムが報告する内容がなかったことを示しています。

    Reason と Message が空の場合の出力例:

    State: Running
    Reason:
    Message:
    

VM を停止または再起動する

VM のライフサイクル中に、ステータスの変更に対応するため、または VM を一般的に管理するために、VM を停止して再起動するか、VM を削除する必要がある場合があります。VM を停止、リセット、削除するには、次のページをご覧ください。