クイックスタート: GKE on Bare Metal で VM を作成する

このクイックスタートでは、Google Distributed Cloud 上の VM ランタイムを使用して、GKE on Bare Metal で仮想マシン(VM)を作成する方法について説明します。Google Distributed Cloud 上の VM ランタイムでは、KubeVirt を使用してクラスタ上の VM をオーケストレートし、均一な開発環境で VM ベースのアプリとワークロードを操作できます。

準備

このクイックスタートの内容を最後まで行うには、GKE on Bare Metal バージョン 1.12(anthosBareMetalVersion: 1.12)以降へのアクセス権が必要です。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine の GKE on Bare Metal を試すか、クラスタ作成の概要をご覧ください。

Google Distributed Cloud 上の VM ランタイムを有効にする

Google Distributed Cloud 上の VM ランタイムは、GKE on Bare Metal バージョン 1.10 以降では自動的にインストールされますが、デフォルトでは無効になっています。GKE on Bare Metal で VM リソースを実行するには、その前に Google Distributed Cloud 上の VM ランタイムを有効にする必要があります。

bmctl

GKE on Bare Metal バージョン 1.11 以降では、bmctl コマンドライン ツールを使用できます。

  • ランタイムを有効にするには、bmctl ツールを使用します。

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    クラスタの kubeconfig ファイルへのパスを指定します。GKE on Bare Metal は、クラスタの作成時に管理ワークステーションに kubeconfig ファイルを生成します。デフォルトでは、パスは bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig です。

    Google Distributed Cloud 上の VM ランタイムがすでに有効になっている場合、このコマンドはエラーを返します。

カスタム リソース

GKE on Bare Metal バージョン 1.10 以降では、カスタム リソース定義を使用して、Google Distributed Cloud 上の VM ランタイムを有効にできます。このカスタム リソースはデフォルトでインストールされます。

  1. VMRuntime カスタム リソースを編集します。

    kubectl edit vmruntime
    
  2. 仕様に enabled:true を設定します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      # useEmulation defaults to "false" if not set.
      useEmulation: true
      # vmImageFormat defaults to "qcow2" if not set.
      vmImageFormat: qcow2
    

    前述の spec セクションでは、次の値を設定できます。

    • enabled: Google Distributed Cloud 上の VM ランタイムを有効にするには、true に設定します。
    • useEmulation: ノードがハードウェア仮想化をサポートしていない場合や、それが不明な場合は、値を true に設定します。使用可能な場合、ハードウェア仮想化は、ソフトウェア エミュレーションよりもパフォーマンスが優れています。指定しない場合、useEmulation フィールドはデフォルトで false になります。
    • vmImageFormat: rawqcow2 の 2 つのディスク イメージ形式値をサポートします。vmImageFormat を設定しない場合、Google Distributed Cloud 上の VM ランタイムは raw ディスク イメージ形式を使用して VM を作成します。raw 形式によって、書き込み形式のコピーである qcow2 よりもパフォーマンスが向上しますが、より多くのディスクを使用する場合があります。VM のイメージ形式の詳細については、QEMU ドキュメントのディスク イメージのファイル形式をご覧ください。
  3. カスタム リソースをエディタに保存します。

  4. VMRuntime カスタム リソースが有効であることを確認します。

    kubectl describe vmruntime vmruntime
    

    VMRuntime カスタム リソースの詳細には、Status セクションが含まれています。VMRuntime.Status.Readytrue として表示されていれば、Google Distributed Cloud 上の VM ランタイムは有効で、機能します。

virtctl クライアント ツールをインストールする

VM を作成して管理するには、virtctl クライアント ツールをインストールします。

  1. virtctl クライアント ツールを kubectl プラグインとしてインストールします。

    export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json"
    sudo -E bmctl install virtctl
    

    認証情報を使用して認証を行い、virtctl クライアント ツールをダウンロードし、ローカルマシンの /usr/bin/kubectl-virt にインストールします。

  2. virtctl プラグインがインストールされていることを確認します。

    kubectl plugin list
    

    レスポンスに kubectl-virt が表示されている場合は、プラグインは正常にインストールされています。

    kubectl-virt が表示されない場合は、前の bmctl install コマンドの出力にある install-virtctl.log ファイル(bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log など)を確認してください。

VM を作成する

このクイックスタートでは、kubectl CLI を使用して、公開 VM イメージとデフォルトの認証情報を使用する VM を作成します。

  1. クラスタで VM を作成します。virtctl プラグインは kubectl コマンドで使用されます。

    kubectl virt create vm VM_NAME \
        --image ubuntu20.04 \
        --configure-initial-password USERNAME:PASSWORD
    

    このコマンドは、local-shared ストレージ クラスを使用して、ReadWriteOnce モードで、Ubuntu 20.04 VM と、デフォルトの 2 CPU、4Gi メモリ、20Gi ブートディスクを作成します。次の値を置き換えます。

    • VM_NAME: VM の名前。 VM 名に使用できるのは、英小文字、数字、「-」のみです。先頭と末尾には英数字を指定する必要があります。長さは 63 文字以下にしてください。詳細については、Kubernetes ドキュメントの RFC 1123 ラベル名をご覧ください。
    • USERNAME: VM 上に作成するアカウントのユーザー名。
    • PASSWORD: ユーザー アカウントのパスワード。

    CLI パラメータに関するエラーが表示された場合は、クラスタのバージョンが 1.11.1 以降であり、virtctl クライアント ツールの最新バージョンを使用していることを確認してください。CLI エラーの詳細については、コンソール ログをご覧ください。ユーザー名とパスワードのルールについては、ゲスト オペレーティング システム(OS)のドキュメントをご覧ください。何かが正常に機能しない場合は、Google Distributed Cloud 上の VM ランタイムの既知の問題を確認してください。

  2. VM の作成には数分かかることがあります。kubectl コマンドで VM のステータスを確認します。

    kubectl get gvm
    

    次の出力例では、Running 状態の VM を示します。

    NAME         STATUS    AGE   IP
    vm-sample1   Running   64s   192.168.2.124
    

VM に接続する

VM が動作している場合は、VM のコンソールに接続します。

  1. コンソールから VM にアクセスするには、kubectl を使用します。

    kubectl virt console VM_NAME
    
  2. プロンプトが表示されたら、VM を作成する際に指定したユーザー認証情報を入力します。

  3. VM のコンソールに正常に接続したら、VM のセッションとコンソールを終了します。

    Ctrl + ]
    

クリーンアップ

このクイックスタートで作成したリソースをクリーンアップするには、次の手順を行います。

  1. VM と関連する DataVolume を削除するには、kubectl を使用します。

    kubectl virt delete vm VM_NAME --all
    

次のステップ