5.2.2. ローカルストレージ Operator を使用したローカルボリュームのプロビジョニング
ローカルボリュームは動的プロビジョニングで作成できません。代わりに、永続ボリュームがローカルストレージ Operator によって作成されることがあります。このローカルボリュームプロビジョナーは、定義されたリソースで指定されているパスでファイルシステムまたはブロックボリュームデバイスを検索します。
前提条件
- ローカルストレージ Operator がインストールされていること。
以下の条件を満たすローカルディスクがある。
- ノードに接続されている。
- マウントされていない。
- パーティションが含まれていない。
手順
ローカルボリュームリソースを作成します。このリソースは、ノードおよびローカルボリュームへのパスを定義する必要があります。
注記同じデバイスに別のストレージクラス名を使用しないでください。これを行うと、複数の永続ボリューム (PV) が作成されます。
例: ファイルシステム
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage"1 spec: nodeSelector:2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-140-183 - ip-10-0-158-139 - ip-10-0-164-33 storageClassDevices: - storageClassName: "local-sc"3 forceWipeDevicesAndDestroyAllData: false4 volumeMode: Filesystem5 fsType: xfs6 devicePaths:7 - /path/to/device8 - 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get nodeから取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- 永続ボリュームオブジェクトの作成時に使用するストレージクラスの名前。ローカルストレージ Operator は、ストレージクラスが存在しない場合にこれを自動的に作成します。このローカルボリュームのセットを一意に識別するストレージクラスを使用するようにしてください。
- 4
- この設定は、パーティションテーブルの署名 (マジックストリング) を削除してディスクを Local Storage Operator (LSO) プロビジョニングに使用できるようにする、
wipefsを呼び出すかどうかを定義します。署名以外のデータは消去されません。デフォルトは "false" です (wipefsは呼び出されません)。再利用する必要がある以前のデータをディスク上に残す場合、forceWipeDevicesAndDestroyAllDataを "true" に設定すると便利です。このようなシナリオでは、このフィールドを true に設定すると、管理者はディスクを手動で消去する必要がありません。ノードを複数回再デプロイできるシングルノード OpenShift (SNO) クラスター環境や、オブジェクトストレージデバイス (OSD) として使用する予定のディスクに以前のデータを残すことができる OpenShift Data Foundation (ODF) を使用する場合も、これに該当します。 - 5
- ローカルボリュームのタイプを定義するボリュームモード (
FilesystemまたはBlock)。注記raw ブロックボリューム (
volumeMode: Block) はファイルシステムでフォーマットされません。このモードは、Pod で実行しているすべてのアプリケーションが raw ブロックデバイスを使用できる場合にのみ使用します。 - 6
- ローカルボリュームの初回マウント時に作成されるファイルシステム。
- 7
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 8
- この値は、
LocalVolumeリソースby-idへの実際のローカルディスクのファイルパス (/dev/disk/by-id/wwnなど) に置き換えます。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。注記RHEL KVM を使用して OpenShift Container Platform を実行している場合は、VM ディスクにシリアル番号を割り当てる必要があります。そうしないと、再起動後に VM ディスクを識別できません。
virsh edit <VM>コマンドを使用して、<serial>mydisk</serial>定義を追加できます。
例: ブロック
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage"1 spec: nodeSelector:2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-136-143 - ip-10-0-140-255 - ip-10-0-144-180 storageClassDevices: - storageClassName: "local-sc"3 forceWipeDevicesAndDestroyAllData: false4 volumeMode: Block5 devicePaths:6 - /path/to/device7 - 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get nodeから取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- 永続ボリュームオブジェクトの作成時に使用するストレージクラスの名前。
- 4
- この設定は、パーティションテーブルの署名 (マジックストリング) を削除してディスクを Local Storage Operator (LSO) プロビジョニングに使用できるようにする、
wipefsを呼び出すかどうかを定義します。署名以外のデータは消去されません。デフォルトは "false" です (wipefsは呼び出されません)。再利用する必要がある以前のデータをディスク上に残す場合、forceWipeDevicesAndDestroyAllDataを "true" に設定すると便利です。このようなシナリオでは、このフィールドを true に設定すると、管理者はディスクを手動で消去する必要がありません。ノードを複数回再デプロイできるシングルノード OpenShift (SNO) クラスター環境や、オブジェクトストレージデバイス (OSD) として使用する予定のディスクに以前のデータを残すことができる OpenShift Data Foundation (ODF) を使用する場合も、これに該当します。 - 5
- ローカルボリュームのタイプを定義するボリュームモード (
FilesystemまたはBlock)。 - 6
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 7
- この値は、
LocalVolumeリソースby-idへの実際のローカルディスクのファイルパス (dev/disk/by-id/wwnなど) に置き換えます。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。注記RHEL KVM を使用して OpenShift Container Platform を実行している場合は、VM ディスクにシリアル番号を割り当てる必要があります。そうしないと、再起動後に VM ディスクを識別できません。
virsh edit <VM>コマンドを使用して、<serial>mydisk</serial>定義を追加できます。
OpenShift Container Platform クラスターにローカルボリュームリソースを作成します。作成したばかりのファイルを指定します。
$ oc create -f <local-volume>.yamlプロビジョナーが作成され、対応するデーモンセットが作成されていることを確認します。
$ oc get all -n openshift-local-storage出力例
NAME READY STATUS RESTARTS AGE pod/diskmaker-manager-9wzms 1/1 Running 0 5m43s pod/diskmaker-manager-jgvjp 1/1 Running 0 5m43s pod/diskmaker-manager-tbdsj 1/1 Running 0 5m43s pod/local-storage-operator-7db4bd9f79-t6k87 1/1 Running 0 14m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/local-storage-operator-metrics ClusterIP 172.30.135.36 <none> 8383/TCP,8686/TCP 14m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/diskmaker-manager 3 3 3 3 3 <none> 5m43s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/local-storage-operator 1/1 1 1 14m NAME DESIRED CURRENT READY AGE replicaset.apps/local-storage-operator-7db4bd9f79 1 1 1 14mデーモンセットプロセスの必要な数と現在の数に注意してください。必要な数が
0の場合、これはラベルセレクターが無効であることを示します。永続ボリュームが作成されていることを確認します。
$ oc get pv出力例
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available local-sc 88m local-pv-2ef7cd2a 100Gi RWO Delete Available local-sc 82m local-pv-3fa1c73 100Gi RWO Delete Available local-sc 48m
LocalVolume オブジェクトを編集しても、既存の永続ボリュームの fsType または volumeMode は変更されません。これが破壊的な操作になる可能性があるためです。