このクイックスタートでは、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 ランタイムを有効にできます。このカスタム リソースはデフォルトでインストールされます。
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
次のステップ
- GKE on Bare Metal で VM の電源状態を管理する。
- GKE on Bare Metal で VM を編集する
- GKE on Bare Metal で VM コンソールのログを表示する。