このクイックスタートでは、GDC 上の VM ランタイムを使用して、Google Distributed Cloud に仮想マシン(VM)を作成する方法について説明します。GDC 上の VM ランタイムは、KubeVirt を使用してクラスタ上の VM をオーケストレートし、均一な開発環境で VM ベースのアプリとワークロードを操作できるようにします。
始める前に
このクイックスタートの内容を最後まで行うには、Google Distributed Cloud バージョン 1.12(anthosBareMetalVersion: 1.12)以降のクラスタへのアクセス権が必要です。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine 上の Google Distributed Cloud を試すか、クラスタ作成の概要をご覧ください。
GDC 上の VM ランタイムを有効にする
GDC 上の VM ランタイムは、Google Distributed Cloud バージョン 1.10 以降では自動的にインストールされますが、デフォルトでは無効になっています。Google Distributed Cloud で VM リソースを実行するには、その前に GDC 上の VM ランタイムを有効にする必要があります。
bmctl
Google Distributed Cloud バージョン 1.11 以降では、bmctl コマンドライン ツールを使用できます。
- ランタイムを有効にするには、 - bmctlツールを使用します。- bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH- クラスタの kubeconfig ファイルのパスを指定します。Google Distributed Cloud は、クラスタの作成時に管理ワークステーションに kubeconfig ファイルを生成します。デフォルトのパスは - bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfigです。- GDC 上の VM ランタイムがすでに有効になっている場合、このコマンドはエラーを返します。 
カスタム リソース
Google Distributed Cloud バージョン 1.10 以降では、カスタム リソース定義を使用して、GDC 上の VM ランタイムを有効にできます。このカスタム リソースはデフォルトでインストールされます。
- VMRuntimeカスタム リソースを編集します。- kubectl edit vmruntime
- 仕様に - 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:- rawと- qcow2の 2 つのディスク イメージ形式値をサポートします。- vmImageFormatを設定しない場合、GDC 上の VM ランタイムは- rawディスク イメージ形式を使用して VM を作成します。- raw形式によって、書き込み形式のコピーである- qcow2よりもパフォーマンスが向上しますが、より多くのディスクを使用する場合があります。VM のイメージ形式の詳細については、QEMU ドキュメントのディスク イメージのファイル形式をご覧ください。
 
- エディタでカスタム リソースを保存します。 
- VMRuntimeカスタム リソースが有効であることを確認します。- kubectl describe vmruntime vmruntime- VMRuntimeカスタム リソースの詳細には、- Statusセクションが含まれています。- VMRuntime.Status.Readyが- trueとして表示されていれば、GDC 上の VM ランタイムが有効になり、機能しています。
virtctl クライアント ツールをインストールする
VM を作成して管理するには、virtctl クライアント ツールをインストールします。
- virtctlクライアント ツールを- kubectlプラグインとしてインストールします。- export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json" sudo -E bmctl install virtctl- 認証情報を使用して認証を行い、 - virtctlクライアント ツールをダウンロードし、ローカルマシンの- /usr/bin/kubectl-virtにインストールします。
- 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 を作成します。
- クラスタで 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 ランタイムの既知の問題を確認してください。
- VM の作成には数分かかることがあります。 - kubectlコマンドで VM のステータスを確認します。- kubectl get gvm- 次の出力例では、 - Running状態の VM を示します。- NAME STATUS AGE IP vm-sample1 Running 64s 192.168.2.124
VM に接続する
VM が実行されている場合は、VM のコンソールに接続します。
- コンソールから VM にアクセスするには、 - kubectlを使用します。- kubectl virt console VM_NAME
- プロンプトが表示されたら、VM を作成する際に指定したユーザー認証情報を入力します。 
- VM のコンソールに正常に接続したら、VM のセッションとコンソールを終了します。 - Ctrl + ]
クリーンアップ
このクイックスタートで作成したリソースをクリーンアップするには、次の手順を行います。
- VM と関連する DataVolume を削除するには、 - kubectlを使用します。- kubectl virt delete vm VM_NAME --all
次のステップ
- Google Distributed Cloud の VM の電源状態を管理する。
- Google Distributed Cloud で VM を編集する。
- Google Distributed Cloud で VM コンソールのログを表示する。