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

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

準備

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

GDC 上の VM ランタイムを有効にする

GDC 上の VM ランタイムは、GKE on Bare Metal バージョン 1.10 以降では自動的にインストールされますが、デフォルトでは無効になっています。GKE on Bare Metal で VM リソースを実行するには、その前に GDC 上の 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 です。

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

カスタム リソース

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

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

    kubectl describe vmruntime vmruntime
    

    VMRuntime カスタム リソースの詳細には、Status セクションが含まれています。VMRuntime.Status.Readytrue として表示されていれば、GDC 上の 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)のドキュメントをご覧ください。なんらかの問題がある場合は、GDC 上の 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
    

次のステップ