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

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

VM ステータスの定義

状態 定義
Pending VM はシステムによって承認され、割り当てを待機しています。
Provisioning VirtualMachineDisk などの VM に関連付けられたリソースがプロビジョニングされ、準備されています。
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 の状態を取得できませんでした。
ErrorUnschedulable VM のスケジューリング中にエラーが発生しました。たとえば、リソース リクエストやスケジューリング制約が満たされない、またはサポートされていないことが原因です。
DiskError VM に、アタッチされた 1 つ以上のディスクに関するエラーがあります。
WaitingForDisk VM は、アタッチされた 1 つ以上の VirtualMachineDisk の準備ができるのを待っています。
CrashLoopBackoff VM がなんらかの理由で頻繁にクラッシュしている。

始める前に

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

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

Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。

  1. Management API サーバー名を確認するか、プラットフォーム管理者(PA)にサーバー名を確認します。

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

  3. この手順では、パスを使用して MANAGEMENT_API_SERVER{"</var>"}} を置き換えます。

権限とアクセス権をリクエストする

このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者ロールが必要です。次の手順に沿って、確認するか、プロジェクト IAM 管理者に VM が存在するプロジェクトの Namespace でプロジェクト VirtualMachine 管理者(project-vm-admin)ロールを割り当ててもらいます。

GDC コンソールまたは gdcloud CLI を使用する VM オペレーションの場合は、プロジェクト IAM 管理者に、プロジェクトの VirtualMachine 管理者ロールとプロジェクト閲覧者(project-viewer)ロールの両方を割り当てるよう依頼します。

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

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

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

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

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

  1. すべての VM を一覧表示し、各 VM のステータスを表示します。

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

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

    変数定義
    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 \
        get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT -o \
        jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'
    

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

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

    ReasonMessage の値を示す出力例:

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

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

    ReasonMessage が空の場合の出力例:

    State: Running
    Reason:
    Message:
    

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

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