このドキュメントは、Google Distributed Cloud を実行するアプリケーション オーナーとプラットフォーム管理者を対象としています。このドキュメントでは、GDC 上の VM ランタイムを使用する VM のストレージ クラスを作成して使用する方法について説明します。StorageClass を使用すると、VM のさまざまなニーズに応じて異なるストレージ構成を定義できます。
始める前に
このドキュメントの内容を最後まで行うには、Google Distributed Cloud バージョン 1.12.0(anthosBareMetalVersion: 1.12.0)以降のクラスタにアクセスする必要があります。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine 上の Google Distributed Cloud を試すか、クラスタ作成の概要をご覧ください。
ストレージ クラスの概要
StorageClass を使用して、VM で使用可能にするストレージのタイプを定義します。さまざまなストレージ クラスが、異なるタイプのストレージ ハードウェア、ファイル システム、パフォーマンスのものにマッピングされる場合があります。GDC 上の VM ランタイムでコンピューティング ワークロードをサポートするストレージ クラスを作成して使用できます。詳しくは、ストレージ クラスをご覧ください。
デフォルトの StorageClass は、GDC 上の VM ランタイムのカスタム リソースで定義できます。VirtualMachineDisks, の作成時に特定のクラスを定義しない場合、このデフォルトの StorageClass が使用されます。初期の StorageClass は構成されず、デフォルトとして設定されます。次のセクションでは、このデフォルトのストレージ クラスを設定または更新する方法を学習します。
デフォルトのストレージ クラスを設定または更新する
初期状態では、Google Distributed Cloud 上の VM ランタイムを持つ GKE on Bare Metal には、デフォルトの StorageClass が構成されていません。StorageClass を指定せずに VirtualMachineDisk を作成するには、まず StorageClass を作成してから、デフォルトに設定する必要があります。
VirtualMachineDisk の作成時に GDC 上の VM ランタイムが使用するデフォルトの StorageClass を最初に設定または更新する場合は、VMRuntime カスタム リソースを更新します。
VMRuntimeカスタム リソースを編集します。kubectl edit vmruntime使用するデフォルトの
StorageClassを指定するspec.storageセクションを追加または更新します。apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true storage: defaultStorageClass: STORAGE_CLASS_NAME ...STORAGE_CLASS_NAMEを、デフォルトで使用するStorageClassの名前に編集します。まずStorageClassを作成する必要がある場合は、StorageClassの作成をご覧ください。VMRuntimeカスタム リソースをエディタに保存して閉じます。仮想マシンディスクを作成する際に
StorageClassを指定しない場合、指定したStorageClassが使用されるようになりました。次のセクションでは、ディスクを作成して特定のストレージ クラスを使用する方法について説明します。既存の
VirtualMachineDiskリソースは、新しく指定されたStorageClassを使用するようには更新されません。
特定の StorageClass を使用する
VirtualMachineDisk を作成する際にデフォルトの StorageClass を使用しない場合は、storageClassName フィールドを使用して別の StorageClass を指定します。
VirtualMachineDisk を作成する際に特定の定義済み StorageClass を使用するには、次の手順を行います。
任意のエディタで、
VirtualMachineDiskマニフェスト(my-disk.yamlなど)を作成します。nano my-disk.yaml次の YAML マニフェストをコピーして貼り付けます。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi storageClassName: STORAGE_CLASS_NAME次の値を置き換えます。
DISK_NAME: ディスクの名前。STORAGE_CLASS_NAME: ディスクに使用するStorageClass。このStorageClassはあらかじめ存在している必要があります。まずStorageClassを作成する必要がある場合は、StorageClass の作成をご覧ください。
ディスク マニフェストをエディタに保存して閉じます。
kubectlを使用してディスクを作成します。kubectl apply -f my-disk.yaml
ストレージ プロファイルを構成する
ストレージ プロファイルには、各 StorageClass に関連付けられた追加の構成オプションが用意されています。これらの構成オプションには、StorageClass を使用する VirtualMachineDisks に使うアクセスモードとボリューム モードが含まれます。
ストレージ プロファイルが構成されていない場合、ディスクはデフォルトで ReadWriteOnce アクセスモードに設定されます。ライブ マイグレーションなどの機能が動作しないため、本番環境のワークロードに対してこのアクセスモードは不十分です。ストレージ プロファイルが構成されていないデフォルトのボリューム モードは Filesystem です。
GDC 上の VM ランタイムは、クラスタ内の StorageClass ごとに 1 つのストレージ プロファイルを自動的に生成します。ストレージ プロファイルは、関連する StorageClass と同じ名前です。次の出力例は、クラスタに 4 つのストレージ クラスと関連するプロファイルが存在することを示しています。
$ kubectl get storageprofiles
NAME AGE
anthos-system 11d
node-disk 11d
standard 11d
nfs 11d
ストレージ プロファイルを編集してアクセスモードまたはボリューム モードを変更するには、次の手順を行います。
StorageProfileカスタム リソースを編集します。kubectl edit storageprofile STORAGE_PROFILE_NAMESTORAGE_PROFILE_NAMEは、編集するStorageProfileに置き換えます。StorageProfileのspec.claimPropertySetsリストにエントリを 1 つ追加します。apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: nfs spec: claimPropertySets: - accessModes: - ACCESS_MODE volumeMode: VOLUME_MODEaccessModeとvolumeModeは、基盤となる Kubernetes コンポーネントを使用します。 設定する値は、使用するストレージ ドライバによって異なります。以下の値は、使用するストレージに応じて適宜読み替えてください。ACCESS_MODE: 使用するアクセスモード。関連するStorageClassでサポートされている場合、優先アクセスモードはReadWriteManyです。- 有効な値は
ReadWriteOnce、ReadOnlyMany、ReadWriteMany、ReadWriteOncePodなどです。指定しない場合、デフォルトで GDC 上の VM ランタイムに基づいてReadWriteOnceが使用されます。詳細については、アクセスモードをご覧ください。
- 有効な値は
VOLUME_MODE: 使用するボリューム モード。- 有効な値は
Filesystem、Blockなどです。指定しない場合、Kubernetes のデフォルトに基づいてFilesystemが使用されます。詳細については、ボリューム モードをご覧ください。
- 有効な値は
StorageProfileカスタム リソースをエディタに保存して閉じます。定義したストレージ プロファイル設定は、仮想ディスクを作成する際に使用されます。既存の
VirtualMachineDiskリソースは、定義したストレージ プロファイル設定を使用するようには更新されません。