このページでは、Google Distributed Cloud の VM ランタイムを実行している Google Distributed Cloud 接続ラックで仮想マシンを管理する方法について説明します。このページの手順を行う前に、GDC 上の VM ランタイムを理解しておく必要があります。サポートされているゲスト オペレーティング システムの一覧については、GDC 上の VM ランタイムの検証済みゲスト オペレーティング システムをご覧ください。
仮想マシンが Distributed Cloud 接続プラットフォームの重要なコンポーネントとして機能する方法については、GKE Enterprise を拡張してオンプレミス エッジ VM を管理するをご覧ください。
Distributed Cloud 接続クラスタは、仮想マシン ウェブフックをサポートしています。これにより、Distributed Cloud Connected はローカル Kubernetes API サーバーに対して行われたユーザー リクエストを検証できます。拒否されたリクエストについては、拒否理由の詳細情報が生成されます。
Distributed Cloud Connected で GDC 上の VM ランタイムのサポートを有効にする
デフォルトでは、Distributed Cloud Connected で GDC 仮想マシンの VM ランタイム サポートが無効になっています。有効にするには、このセクションの手順を行います。このセクションの手順では、完全に機能する Distributed Cloud 接続クラスタがあることを前提としています。
次の内容で
VMRuntimeカスタム リソースを変更し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Enable Anthos VM Runtime support enabled: true # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw" # Set node grace period to 55 seconds; haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
vmImageFormatパラメータの値は変更しないでください。Distributed Cloud Connected は、他の仮想ディスク形式をサポートしていません。このプロセスは通常、完了するまでに数分かかります。
vmImageFormatパラメータの値は変更しないでください。Distributed Cloud Connected は、他の仮想ディスク形式をサポートしていません。このプロセスは通常、完了するまでに数分かかります。
次のコマンドを使用して、
VMRuntimeカスタム リソースがクラスタに適用されていることを確認します。kubectl get vmruntime -o yaml
このコマンドでは、次の例のような出力が返されます。
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...次のコマンドを使用して、クラスタで GDC の VM ランタイム仮想マシン サポートが有効になっていることを確認します。
kubectl get pods -n vm-system
このコマンドは、クラスタで実行されている GDC サブシステム Pod の VM Runtime を示す出力を返します。次の例をご覧ください。
NAME READY STATUS RESTARTS AGE cdi-apiserver-6c76c6cf7b-n68wn 1/1 Running 0 132m cdi-deployment-f78fd599-vj7tv 1/1 Running 0 132m cdi-operator-65c4df9647-fcb9d 1/1 Running 0 134m cdi-uploadproxy-7765ffb694-6j7bf 1/1 Running 0 132m macvtap-fjfjr 1/1 Running 0 134m virt-api-77dd99dbbb-bs2fb 1/1 Running 0 132m virt-api-77dd99dbbb-pqc27 1/1 Running 0 132m virt-controller-5b44dbbbd7-hc222 1/1 Running 0 132m virt-controller-5b44dbbbd7-p8xkk 1/1 Running 0 132m virt-handler-n76fs 1/1 Running 0 132m virt-operator-86565697d9-fpxqh 2/2 Running 0 134m virt-operator-86565697d9-jnbt7 2/2 Running 0 134m vm-controller-controller-manager-7844d5fb7b-72d8m 2/2 Running 0 134m vmruntime-controller-manager-845649c847-m78r9 2/2 Running 0 175m
virtctl 管理ツールをインストールする
Distributed Cloud 接続クラスタの仮想マシンを管理するには、virtctl クライアント ツールが必要です。ツールをインストールする手順は次のとおりです。
virtctlクライアント ツールをkubectlプラグインとしてインストールします。export VERSION=v0.59.0-anthos1.28-gke.8 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
virtプラグインがインストールされていることを確認します。kubectl plugin list
プラグインが正常にインストールされると、コマンドの出力に
kubectl-virtがプラグインの 1 つとして表示されます。
Distributed Cloud コネクテッドで仮想マシンをプロビジョニングする
このセクションでは、Symcloud Storage 抽象化レイヤを使用して、Distributed Cloud 接続クラスタに Linux 仮想マシンと Windows 仮想マシンをプロビジョニングする方法を示す構成例を示します。
Distributed Cloud Connected は仮想マシンにファイル システム ストレージを提供しないため、kubectl virt コマンドを使用して Distributed Cloud Connected クラスタに仮想マシンを直接作成することはできません。
このセクションの手順を完了する前に、まず Symcloud Storage 用に Distributed Cloud connected を構成するの手順を完了する必要があります。後でクラスタで Symcloud Storage を無効にすると、Symcloud Storage を使用するように構成された仮想マシンは失敗します。
Distributed Cloud コネクテッドに Linux 仮想マシンをプロビジョニングする
次の例は、Ubuntu Server 22.04 を実行する Symcloud Storage を使用して Linux 仮想マシンをプロビジョニングする方法を示しています。インストール ソースは Ubuntu Server 22.04 ISO ディスク イメージです。
Ubuntu Server インストール ディスク イメージの次の内容で
VirtualMachineDiskリソースを作成し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: ubuntu-iso-disk spec: size: 20Gi storageClassName: robin diskType: cdrom source: http: url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
仮想マシンの仮想ハードディスクに次の内容で
VirtualMachineDiskリソースを作成し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
次の内容で
VirtualMachineTypeリソースを作成して、仮想マシンの構成を指定し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
次の内容で
VirtualMachineリソースを作成して、クラスタで仮想マシンをインスタンス化して起動し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: ubu-vm name: ubu-vm # Propagate the virtual machine name to the VMI spec: osType: Linux compute: virtualMachineTypeName: small-2-20 interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: ubuntu-main-disk boot: true - virtualMachineDiskName: ubuntu-iso-disk
また、クラスタで次の機能も構成する必要があります。
仮想マシンに Ubuntu Server をインストールします。
importerPod が Ubuntu Server インストール ディスク イメージをダウンロードするまで待ちます。仮想マシンのステータスを確認します。
kubectl get gvm VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではubu-vm)。SSH またはリモート デスクトップを使用して仮想マシンにログオンします。
Ubuntu Linux のインストール手順を完了します。
クリーンアップします。
仮想マシンを停止します。
kubectl virt stop VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではubu-vm)。仮想マシンの YAML ファイルを編集して、インストール ディスク イメージへの参照を削除します。
kubectl edit gvm VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではubu-vm)。仮想マシンを起動します。
kubectl virt start VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではubu-vm)。インストール ディスク イメージの
VirtualMachineDiskリソースを削除します。kubectl delete virtualmachinedisk ubuntu-iso-disk
Distributed Cloud Connected で Windows 仮想マシンをプロビジョニングする
次の例は、Symcloud Storage を使用して Windows 仮想マシンをプロビジョニングする方法を示しています。手順は Linux 仮想マシンのプロビジョニングと似ていますが、Windows のインストールに必要な virtio ドライバ ディスク イメージが追加されています。
Windows のライセンス コピーとそのインストール メディア イメージを入手します。
Windows インストール ディスク イメージの次の内容で
VirtualMachineDiskリソースを作成し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso-disk namespace: default spec: size: 5Gi storageClassName: robin diskType: cdrom source: http: url: WINDOWS_ISO_URL
NAT_GATEWAYは、ターゲットの Windows インストール ISO ディスク イメージの完全な URL に置き換えます。virtioドライバ用に次の内容のVirtualMachineDiskリソースを作成し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-virtio-driver namespace: default spec: size: 1Gi storageClassName: robin diskType: cdrom source: http: url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
仮想マシンの仮想ハードディスクに次の内容で
VirtualMachineDiskリソースを作成し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
次の内容で
VirtualMachineTypeリソースを作成して、仮想マシンの構成を指定し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
次の内容で
VirtualMachineリソースを作成し、クラスタに適用します。このリソースは、クラスタで仮想マシンをインスタンス化して起動します。apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: win-vm name: win-vm # Propagate the virtual machine name to the VMI spec: osType: Windows compute: virtualMachineTypeName: my-vmt interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: windows-main-disk boot: true - virtualMachineDiskName: windows-iso-disk - virtualMachineDiskName: win-virtio-driver
また、クラスタで次の機能も構成する必要があります。
仮想マシンに Windows をインストールします。
importerPod が Windows インストール ディスク イメージをダウンロードするまで待ちます。仮想マシンのステータスを確認します。
kubectl get gvm VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではwin-vm)。Windows VM に接続して OS のインストールを完了するの手順に沿って、Windows のインストールを完了します。
クリーンアップします。
仮想マシンを停止します。
kubectl virt stop VM_NAME
VM_NAMEは、仮想マシンの名前に置き換えます(この例ではwin-vm)。ISO イメージとドライバ ディスクを切断するの手順を完了します。
Distributed Cloud コネクテッドで実行されている仮想マシンを管理する
Distributed Cloud Connected で実行されている仮想マシンの管理手順については、次の GDC 上の VM ランタイムのドキュメントをご覧ください。
Distributed Cloud connected で実行されている仮想マシンを管理するには、まず kubectl 接続を構成する必要があります。
Distributed Cloud Connected で GDC の VM ランタイムを無効にする
このセクションの手順に沿って、Distributed Cloud Connected で GDC 上の VM ランタイムを無効にします。Distributed Cloud コネクテッドで GDC 上の VM ランタイムを無効にする前に、VM を削除するで説明されているように、Distributed Cloud コネクテッド クラスタ上のすべての仮想マシンを停止して削除する必要があります。
Distributed Cloud Connected で GDC 上の VM ランタイムを無効にするには、次の手順で VMRuntime カスタム リソースを変更して enabled 仕様パラメータを false に設定し、クラスタに適用します。
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Disable Anthos VM Runtime enabled: false # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw"
次のステップ
- Distributed Cloud 接続サーバーで仮想マシンを管理する
- Distributed Cloud 接続にワークロードをデプロイする
- GPU ワークロードを管理する
- ゾーンを管理する
- マシンを管理する
- クラスタの管理
- ノードプールを管理する