このドキュメントは、ベアメタル版 GKE を実行するアプリケーション オーナーとプラットフォーム管理者を対象としています。このドキュメントでは、Google Distributed Cloud で VM ランタイムを使用する VM にストレージ クラスを作成して使用する方法について説明します。StorageClass
を使用すると、VM のさまざまなニーズに応じて異なるストレージ構成を定義できます。
準備
このドキュメントの内容を最後まで行うには、GKE on Bare Metal バージョン 1.12.0(anthosBareMetalVersion: 1.12.0
)以降のクラスタにアクセスする必要があります。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine の GKE on Bare Metal を試すか、クラスタ作成の概要をご覧ください。
ストレージ クラスの概要
StorageClass
を使用して、VM で使用可能にするストレージのタイプを定義します。さまざまなストレージ クラスが、異なるタイプのストレージ ハードウェア、ファイル システム、パフォーマンスのものにマッピングされる場合があります。 Google Distributed Cloud 上の VM ランタイムでコンピューティング ワークロードをサポートするストレージ クラスを作成し、使用することができます。詳しくは、ストレージ クラスをご覧ください。
デフォルトの StorageClass
は、Google Distributed Cloud 上の VM ランタイムのカスタム リソースで定義できます。VirtualMachineDisks,
の作成時に特定のクラスを定義しない場合、このデフォルトの StorageClass
が使用されます。初期の StorageClass
は構成されず、デフォルトとして設定されます。次のセクションでは、このデフォルトのストレージ クラスを設定または更新する方法を学習します。
デフォルトのストレージ クラスを設定または更新する
当初、Google Distributed Cloud 上の VM ランタイムを持つ GKE on Bare Metal には、デフォルトの StorageClass
が構成されていません。StorageClass
を指定せずに VirtualMachineDisk
を作成するには、まず StorageClass
を作成してから、デフォルトに設定する必要があります。
VirtualMachineDisk
の作成時に Google Distributed Cloud 上の 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
を使用するようには更新されません。
特定のストレージ クラスを使用する
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
です。
Google Distributed Cloud 上の 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_NAME
STORAGE_PROFILE_NAME
は、編集するStorageProfile
に置き換えます。StorageProfile
のspec.claimPropertySets
リストにエントリを 1 つ追加します。apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: nfs spec: claimPropertySets: - accessModes: - ACCESS_MODE volumeMode: VOLUME_MODE
accessMode
とvolumeMode
は、基盤となる Kubernetes コンポーネントを使用します。 設定する値は、使用するストレージ ドライバによって異なります。以下の値は、使用するストレージに応じて適宜読み替えてください。ACCESS_MODE
: 使用するアクセス モード。関連するStorageClass
でサポートされている場合、優先アクセスモードはReadWriteMany
です。- 有効な値は
ReadWriteOnce
、ReadOnlyMany
、ReadWriteMany
、ReadWriteOncePod
などです。指定しない場合、デフォルトで Google Distributed Cloud 上の VM ランタイムに基づいてReadWriteOnce
が使用されます。詳細については、アクセスモードをご覧ください。
- 有効な値は
VOLUME_MODE
: 使用するボリューム モード。- 有効な値は
Filesystem
、Block
などです。指定しない場合、Kubernetes のデフォルトに基づいてFilesystem
が使用されます。詳細については、ボリューム モードをご覧ください。
- 有効な値は
StorageProfile
カスタム リソースをエディタに保存して閉じます。定義したストレージ プロファイル設定は、仮想ディスクを作成する際に使用されます。既存の
VirtualMachineDisk
リソースは、定義したストレージ プロファイル設定を使用するようには更新されません。