このクイックスタートでは、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 vmruntimeVMRuntimeカスタム リソースの詳細には、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 コンソールのログを表示する。