このページでは、Google Distributed Cloud の VM ランタイムを実行している Google Distributed Cloud 接続サーバー上の仮想マシンを管理する方法について説明します。このページの手順を行う前に、GDC 上の VM ランタイムを理解しておく必要があります。サポートされているゲスト オペレーティング システムの一覧については、GDC 上の VM ランタイムの検証済みゲスト オペレーティング システムをご覧ください。
仮想マシンが Distributed Cloud 接続プラットフォームの重要なコンポーネントとして機能する方法については、GKE Enterprise を拡張してオンプレミス エッジ VM を管理するをご覧ください。
Distributed Cloud 接続クラスタは、仮想マシン ウェブフックをサポートしています。これにより、Distributed Cloud Connected はローカル Kubernetes API サーバーに対して行われたユーザー リクエストを検証できます。拒否されたリクエストについては、拒否理由の詳細情報が生成されます。
Symcloud Storage を構成する
Google Distributed Cloud コネクテッド サーバーは、ストレージ ソリューションとして Rakuten Symcloud Storage を使用します。Symcloud Storage は、各 Distributed Cloud 接続ノードでローカル ストレージ抽象化レイヤとして機能し、他の Distributed Cloud 接続ノードで実行されているワークロードでローカル ストレージを使用できるようにするサードパーティ ソリューションです。
Symcloud Storage は Google Cloud Marketplace からデプロイされ、そこに記載されている規約が適用されます。Google は、Distributed Cloud 接続で Symcloud Storage を使用する場合のサポートを限定的に提供します。また、必要に応じてサードパーティ プロバイダに協力を依頼することがあります。Symcloud Storage のソフトウェア アップデートは、Distributed Cloud Connected のソフトウェア アップデートに含まれています。
仮想マシンで Symcloud Storage を有効にするには、Google Distributed Cloud 接続クラスタを次のように構成します。
次のコマンドを使用して
robinioNamespace を作成します。kubectl create ns robinio
Symcloud Storage ライセンス ファイルを取得し、次のコマンドを使用してクラスタに適用します。
kubectl apply LICENSE_FILE
次のコマンドを使用して、Symcloud Storage が稼働していることを確認します。
kubectl apply LICENSE_FILE
このコマンドでは、次のような出力が返されます。
Name: robin Namespace: Labels: app.kubernetes.io/instance=robin app.kubernetes.io/managed-by=robin.io app.kubernetes.io/name=robin Annotations: <none> API Version: manage.robin.io/v1 Kind: RobinCluster Metadata: … Spec: … Status: … Phase: Ready …次の構成をクラスタに適用して、
robin-block-immediateストレージ クラスを作成します。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: robin-block-immediate parameters: faultdomain: host replication: "3" blocksize: "512" provisioner: robin reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
次の構成をクラスタに適用して、
robin-snapshotclassボリューム スナップショット クラスを作成します。apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: robin-snapshotclass labels: app.kubernetes.io/instance: robin app.kubernetes.io/managed-by: robin.io app.kubernetes.io/name: robin annotations: snapshot.storage.kubernetes.io/is-default-class: "true" driver: robin deletionPolicy: Delete
Distributed Cloud Connected で GDC 上の VM ランタイムのサポートを有効にする
デフォルトでは、Distributed Cloud Connected で GDC 上の VM ランタイムの仮想マシン サポートが有効になっています。手動で有効にする必要がある場合は、このセクションの手順を行います。このセクションの手順では、完全に機能する Distributed Cloud 接続クラスタがあることを前提としています。クラスタで GDC 仮想マシンの VM ランタイム サポートを無効にするには、このセクションで説明した変更を元に戻します。
GDC 仮想マシン サブシステムで VM ランタイムを有効にするには、次の操作を行います。
次の内容で
VMRuntimeカスタム リソースを変更し、クラスタに適用します。apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: annotations: baremetal.cluster.gke.io/vmrumtime-force-disable: "false" vm.cluster.gke.io/enable-vm-backup: "true" spec: enabled: true storage: defaultStorageClass: robin-block-immediate haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
このプロセスは通常、完了するまでに数分かかります。
次のコマンドを使用して、
VMRuntimeカスタム リソースがクラスタに適用されていることを確認します。kubectl get vmruntime
このコマンドでは、次の例のような出力が返されます。
NAME AGE ENABLED READY PREFLIGHTCHECK vmruntime 5m true true true次の内容で
robin-block-immediateストレージ クラスのstorageprofileを変更し、クラスタに適用します。apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: robin-block-immediate spec: claimPropertySets: accessModes: ReadWriteMany volumeMode: Block
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 つとして表示されます。
仮想マシン イメージ用の Cloud Storage バケットを作成する
このセクションの手順に沿って、仮想マシン イメージ用の Cloud Storage バケットを作成します。イメージ リポジトリがすでに確立されている場合は、このセクションをスキップしてください。
バケットを作成するの手順に沿ってバケットを作成します。
次のコマンドを使用して、バケットにアクセスするためのサービス アカウントとキーを構成します。
export PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts create image-access gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:image-access@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ gcloud iam service-accounts keys create ./image-access-gcr.json \ --iam-account="image-access@${PROJECT_ID}.iam.gserviceaccount.com"
バケットにアクセスするための Secret をクラスタに作成します。バケットが一般公開されている場合は、この手順をスキップします。このシークレットは、仮想マシン ディスクと同じ Namespace に存在する必要があります。影響を受ける Namespace ごとに Secret を作成する必要があります。
kubectl create secret generic gcs-image-sa --from-file=creds-gcp.json=./image-access-gcr.json -n NAMESPACE
CLUSTER_IDは、ターゲット Namespace の名前に置き換えます。画像をバケットに保存します。
仮想マシン イメージから仮想マシン ディスクを作成する
このセクションの手順に沿って、仮想マシン イメージから仮想マシン ディスクを作成します。
Cloud Storage に保存されているイメージからディスクを作成する
次の構成をクラスタに適用して、Cloud Storage バケットに保存されている仮想マシンから仮想マシン ディスクを作成します。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: gcs: url: gs://{PROJECT_ID}-vm-images/IMAGE_FILE secretRef: gcs-image-sa size: DISK_SIZE storageClassName: robin-block-immediate
次のように置き換えます。
DISK_NAME: この仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。IMAGE_FILE: 仮想マシン イメージ ファイルの名前。DISK_SIZE: 目的のディスクサイズ。この値は、仮想マシン イメージ ファイルのvirtual-size値より大きくする必要があります。この値は、qemu-img info DISK_SIZEコマンドで確認できます。
storageClassName の値を指定しない場合は、VMRuntime リソースで指定されたデフォルト値が使用されます。
既存のディスク イメージからディスクを作成する
クラスタ上の既存の仮想マシン ディスクまたはイメージ ファイルから仮想マシン ディスクを作成します。
次の構成をクラスタに適用して、ターゲット ディスクを作成します。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: IMAGE_DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: EXISTING_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
次のように置き換えます。
IMAGE_DISK_NAME: この仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。EXISTING_DISK_NAME: 既存の仮想マシン ディスクの名前。DISK_SIZE: 目的のディスクサイズ。これは、既存のディスクまたはイメージ ファイルのサイズ以上である必要があります。
既存のディスクまたはイメージ ファイルのサイズは、次のように
qemu-imgツールを使用して取得できます。qemu-img info EXISTING_DISK_NAME
storageClassNameの値を指定しない場合は、VMRuntimeリソースで指定されたデフォルト値が使用されます。次の構成をクラスタに適用して、既存のイメージ ファイルから新しいディスクを作成します。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: IMAGE_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
次のように置き換えます。
IMAGE_DISK_NAME: 前の手順で作成した仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。DISK_SIZE: 目的のディスクサイズ。前の手順で作成した仮想マシン ディスクのサイズと同じにする必要があります。
次のコマンドを使用して、ターゲット ディスクを目的のサイズに変更します。
kubectl edit gdisk DISK_NAME -n NAMESPACE
次のように置き換えます。
DISK_NAME: 前の手順で作成した仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。
ディスクの構成で
spec.size値を変更し、クラスタに適用します。
空のディスクを作成する
次の構成をクラスタに適用して、空の仮想マシン ディスクを作成します。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: size: DISK_SIZE storageClassName: robin-block-immediate
次のように置き換えます。
DISK_NAME: この仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。DISK_SIZE: 目的のディスクサイズ(ギビバイト単位)。この値は、仮想マシン イメージ ファイルのvirtual-size値より大きくする必要があります。この値は、qemu-img info DISK_SIZEコマンドで確認できます。
storageClassName の値を指定しない場合は、VMRuntime リソースで指定されたデフォルト値が使用されます。
仮想ネットワーキングを構成する
ネットワーキングの手順に沿って、仮想マシンの仮想ネットワーキングを構成します。
仮想マシンを作成する
このセクションの手順に沿って、Distributed Cloud 接続サーバーのデプロイに仮想マシンを作成します。このセクションの手順は、さまざまなシナリオの構成を示すための例です。仮想マシンの構成の詳細については、GDC 上の VM ランタイムを使用して、特定の CPU とメモリリソースを持つ VM を作成するをご覧ください。
Google Cloud コンソールを使用して仮想マシンを作成する
Google Cloud コンソールを使用して仮想マシンを作成するには、次の操作を行います。
Google Cloud コンソールで、[クラスタ] ページに移動します。
ターゲットの Google Cloud プロジェクトを選択します。
(省略可)まだ行っていない場合は、ターゲット クラスタにログインします。
左側のナビゲーション パネルで、[クラスタ] をクリックします。
[Anthos マネージド クラスタ] リストで、ターゲット クラスタをクリックします。
右側の情報ペインで、[ログイン] をクリックします。
表示されたポップアップ ダイアログで、使用する認証方法を選択し、認証情報を入力して、[ログイン] をクリックします。
[仮想マシン] ページに移動します。
[作成] をクリックします。
[基本] セクションで、次の操作を行います。
[名前] フィールドに、仮想マシンのわかりやすい名前を入力します。
[クラスタを選択] フィールドで、仮想マシンのターゲット クラスタを選択します。
[Namespace] フィールドで、ターゲット Namespace を選択します。
[OS タイプ] フィールドで、ターゲット オペレーティング システムを選択します。
(省略可)この仮想マシンの構成に 1 つ以上のラベルを追加する場合は、[ラベルを追加] をクリックします。
[マシンの構成] セクションで、次のいずれかの操作を行います。
この仮想マシンの vCPU 数とメモリ容量を指定する場合は、[カスタム構成] を選択して目標値を入力し、[次へ] をクリックします。
この仮想マシンに事前に決定された数の vCPU とメモリ量を使用する場合は、[標準構成] を選択し、[マシンタイプ] プルダウン リストからマシン構成を選択して、[次へ] をクリックします。
[ストレージ] セクションで、次のいずれかを行います。
この仮想マシン用に新しい仮想ディスクを作成する場合は、[新しいディスクを追加] を選択し、[名前] フィールドにわかりやすい名前を入力します。[GiB] フィールドにサイズ(ギガバイト単位)を入力し、[イメージ] フィールドに URL を入力します。
この仮想マシンに既存の仮想ディスクを使用する場合は、[既存のディスクを選択] を選択し、[ディスクを選択] プルダウン リストからターゲット ディスク イメージを選択します。
[読み取り専用] チェックボックスと [自動削除] チェックボックスを使用して、ディスクを読み取り専用にするかどうか、この仮想マシンが削除されたときに自動的に削除するかどうかを指定します。
[ドライバ] プルダウン リストで仮想ディスク ドライバを指定します。
この仮想マシンに別のディスクを追加するには、[追加ディスク] セクションで [ディスクを追加] をクリックします。
[NEXT] をクリックします。
[ネットワーク] セクションで、次の操作を行います。
[デフォルトのネットワーク インターフェース] サブセクションの [インターフェース名] フィールドに、この仮想マシンのプライマリ ネットワーク インターフェースの名前を指定します。
[ネットワーク タイプ] プルダウン リストから対応するネットワーク タイプを選択します。
[外部アクセスを許可する] チェックボックスを使用して、このネットワーク インターフェースへの外部アクセスを許可するかどうかを指定します。このオプションを有効にする場合は、[公開ポート] フィールドに、外部に公開するポートのカンマ区切りのリストを入力する必要があります。
この仮想マシンに 1 つ以上のセカンダリ ネットワーク インターフェースを追加する場合は、[ネットワーク インターフェースを追加] をクリックします。
[NEXT] をクリックします。
[詳細オプション] セクションで、[更新時に自動再起動] チェックボックスを使用して、ターゲット クラスタの
Distributed Cloud 接続ソフトウェアが更新された後にこの仮想マシンを再起動するかどうかを指定します。[ファームウェア] セクションで、次の操作を行います。
[ブートローダーのタイプ] フィールドで、ターゲット ファームウェアのタイプを選択します。UEFI ファームウェアを選択した場合は、[セキュアブート] チェックボックスを使用してセキュアブートを有効にできます。
[シリアル] フィールドで、この仮想マシンのシリアル番号を指定します。
[UUID] フィールドに、この仮想マシンの Universally Unique Identifier(UUID)を指定します。
[Cloud-init] セクションで、次の操作を行います。
[ネットワーク データ シークレット] フィールドにネットワーク データ シークレット値を指定します。
[ユーザーデータ シークレット] フィールドにユーザーデータ シークレット値を指定します。
[CREATE VM] をクリックして仮想マシンを作成します。
YAML ファイルから仮想マシンを作成する
YAML 構成ファイルから仮想マシンを作成する手順は次のとおりです。
Google Cloud コンソールで、[クラスタ] ページに移動します。
ターゲットの Google Cloud プロジェクトを選択します。
(省略可)まだ行っていない場合は、ターゲット クラスタにログインします。
左側のナビゲーション パネルで、[クラスタ] をクリックします。
[Anthos マネージド クラスタ] リストで、ターゲット クラスタをクリックします。
右側の情報ペインで、[ログイン] をクリックします。
表示されたポップアップ ダイアログで、使用する認証方法を選択し、認証情報を入力して、[ログイン] をクリックします。
[仮想マシン] ページに移動します。
[YAML で作成] をクリックします。
[クラスタを選択] フィールドで、仮想マシンのターゲット クラスタを選択します。
仮想マシン構成を YAML 形式で YAML フィールドに貼り付けます。
[作成] をクリックします。
ブート可能なディスク イメージから仮想マシンを作成する
ブート可能なディスク イメージから仮想マシンを作成するには、クラスタに次の構成を適用します。
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux/Windows guestEnvironment: {} // comment out this line to enable guest environment for access management autoRestartOnConfigurationChange: true compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: network-410 ipAddresses: - 10.223.237.10/25 disks: - virtualMachineDiskName: my-boot-disk boot: true - virtualMachineDiskName: my-data-disk
次のように置き換えます。
DISK_NAME: この仮想マシン ディスクの名前。NAMESPACE: ターゲット Namespace。
ISO 光ディスク イメージから仮想マシンを作成する
ISO 光ディスク イメージから仮想マシンを作成するには、Google Distributed Cloud で ISO イメージから Windows VM を作成するの手順を完了します。
GPU をサポートする仮想マシンを作成する
このページで説明する手順を完了して、ビジネス要件を満たすように構成された仮想マシンを作成し、GPU リソースを使用するように仮想マシンを構成するの手順を完了します。
仮想マシンにアクセスする
このセクションの手順を完了して、Distributed Cloud 接続サーバーのデプロイで実行されている仮想マシンにアクセスします。
アクセス認証情報を取得する
このセクションの手順を完了して、Linux ゲスト環境機能を使用して仮想マシンにアクセスするために必要な認証情報を取得します。
次の構成をクラスタに適用して、ターゲット仮想マシンの Linux ゲスト環境を有効にします。
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: {} autoRestartOnConfigurationChange: true
次のコマンドを使用して、SSH 鍵ペアを含む
id_rsa.pubファイルを生成します。ssh-keygen -t rsa次の構成をクラスタに適用して、
VirtualMachineAccessRequestリソースを作成します。apiVersion: vm.cluster.gke.io/v1alpha1 kind: VirtualMachineAccessRequest metadata: name: RESOURCE_NAME namespace: NAMESPACE spec: vm: VM_NAME user: USER_NAME ssh: key: RSA_KEY ttl: 2h
次のように置き換えます。
RESOURCE_NAME: この仮想マシン アクセス リクエスト リソースのわかりやすい名前。NAMESPACE: ターゲット Namespace。VM_NAME: ターゲット仮想マシンの名前。USER_NAME: アクセス権が付与されるユーザーの名前。RSA_KEY: 前の手順で生成したid_rsa.pubファイルの内容。
次のコマンドを使用して、アクセス リクエストのステータスを確認します。
kubectl get vmar
コマンドが
Configuredステータスを返したら、次の手順に進みます。SSH またはリモート デスクトップを使用して仮想マシンにアクセスします。
- 仮想マシンがローカル ネットワークに接続されている場合は、直接アクセスできます。
- 仮想マシンが Pod ネットワークに接続されている場合は、必要なポートにアクセスするためにロードバランサ サービスを作成する必要があります。
仮想マシンを起動、再起動、停止する
次のコマンドを使用して、仮想マシンの起動、再起動、停止を行います。
- 仮想マシンを起動する:
kubectl virt start vmVM_NAME-nNAMESPACE - 仮想マシンを再起動する:
kubectl virt restart vmVM_NAME-nNAMESPACE - 仮想マシンを停止する:
kubectl virt stop vmVM_NAME-nNAMESPACE
次のように置き換えます。
VM_NAME: ターゲット仮想マシンの名前。NAMESPACE: ターゲット Namespace。
Google Cloud コンソールを使用して仮想マシンを起動または停止する
Google Cloud コンソールで、[クラスタ] ページに移動します。
ターゲットの Google Cloud プロジェクトを選択します。
(省略可)まだ行っていない場合は、ターゲット クラスタにログインします。
左側のナビゲーション パネルで、[クラスタ] をクリックします。
[Anthos マネージド クラスタ] リストで、ターゲット クラスタをクリックします。
右側の情報ペインで、[ログイン] をクリックします。
表示されたダイアログで、使用する認証方法を選択し、認証情報を入力して、[ログイン] をクリックします。
[仮想マシン] ページに移動します。
仮想マシンのリストで、ターゲット仮想マシンのチェックボックスをオンにします。
ページの上部にある [開始] または [停止] をクリックします。
Google Cloud コンソールを使用して仮想マシンのステータスを表示する
Google Cloud コンソールで、[クラスタ] ページに移動します。
ターゲットの Google Cloud プロジェクトを選択します。
(省略可)まだ行っていない場合は、ターゲット クラスタにログインします。
左側のナビゲーション パネルで、[クラスタ] をクリックします。
[Anthos マネージド クラスタ] リストで、ターゲット クラスタをクリックします。
右側の情報ペインで、[ログイン] をクリックします。
表示されたポップアップ ダイアログで、使用する認証方法を選択し、認証情報を入力して、[ログイン] をクリックします。
[仮想マシン] ページに移動します。
ターゲット仮想マシンをクリックします。
表示されたページで、[詳細]、[イベント]、[YAML] の各タブをクリックして、この仮想マシンに関する対応する情報を表示します。
仮想マシンを変更する
仮想マシンを変更するには、削除して、更新された構成で再作成する必要があります。
Google Cloud コンソールを使用して仮想マシンを削除する
Google Cloud コンソールで、[クラスタ] ページに移動します。
ターゲットの Google Cloud プロジェクトを選択します。
(省略可)まだ行っていない場合は、ターゲット クラスタにログインします。
左側のナビゲーション パネルで、[クラスタ] をクリックします。
[Anthos マネージド クラスタ] リストで、ターゲット クラスタをクリックします。
右側の情報ペインで、[ログイン] をクリックします。
表示されたダイアログで、使用する認証方法を選択し、認証情報を入力して、[ログイン] をクリックします。
[仮想マシン] ページに移動します。
仮想マシンのリストで、ターゲット仮想マシンのチェックボックスをオンにします。
ページ上部の [削除] をクリックします。
表示される確認ダイアログで、仮想マシンの名前を入力して [削除] をクリックします。
次のステップ
- Distributed Cloud コネクテッド ラックで仮想マシンを管理する
- Distributed Cloud 接続にワークロードをデプロイする
- GPU ワークロードを管理する
- ゾーンを管理する
- マシンを管理する
- クラスタの管理
- ノードプールを管理する