10.5. ホストパスプロビジョナーを使用したローカルストレージの設定
ホストパスプロビジョナー (HPP) を使用して、仮想マシンのローカルストレージを設定できます。
OpenShift Virtualization Operator のインストール時に、Hostpath Provisioner Operator は自動的にインストールされます。HPP は、Hostpath Provisioner Operator によって作成される OpenShift Virtualization 用に設計されたローカルストレージプロビジョナーです。HPP を使用するには、基本ストレージプールを使用して HPP カスタムリソース (CR) を作成します。
10.5.1. 基本ストレージプールを使用したホストパスプロビジョナーの作成 リンクのコピーリンクがクリップボードにコピーされました!
storagePools スタンザを使用して HPP カスタムリソース (CR) を作成することにより、基本ストレージプールを使用してホストパスプロビジョナー (HPP) を設定します。ストレージプールは、CSI ドライバーが使用する名前とパスを指定します。
オペレーティングシステムと同じパーティションにストレージプールを作成しないでください。そうしないと、オペレーティングシステムのパーティションがいっぱいになり、パフォーマンスに影響を与えたり、ノードが不安定になったり、使用できなくなったりする可能性があります。
前提条件
-
spec.storagePools.pathで指定されたディレクトリーには、読み取り/書き込みアクセス権が必要です。 -
OpenShift CLI (
oc) がインストールされている。
手順
次の例のように、
storagePoolsスタンザを含むhpp_cr.yamlファイルを作成します。apiVersion: hostpathprovisioner.kubevirt.io/v1beta1 kind: HostPathProvisioner metadata: name: hostpath-provisioner spec: imagePullPolicy: IfNotPresent storagePools: - name: any_name path: "/var/myvolumes" workload: nodeSelector: kubernetes.io/os: linux-
spec.storagePools.nameは、使用するソースを識別するための名前を定義します。StorageClass.yamlのstoragePools名と同じである必要があります。 -
spec.storagePools.pathは、このノードパスの下にあるストレージプールディレクトリーを定義します。パス/var/myvolumesの値が、各ワーカーノード上に存在するディレクトリーを指定していることを確認します。
-
- ファイルを保存して終了します。
次のコマンドを実行して HPP を作成します。
$ oc create -f hpp_cr.yaml
10.5.1.1. ストレージクラスの作成について リンクのコピーリンクがクリップボードにコピーされました!
ストレージクラスの作成時に、ストレージクラスに属する永続ボリューム (PV) の動的プロビジョニングに影響するパラメーターを設定します。StorageClass オブジェクトの作成後には、このオブジェクトのパラメーターを更新できません。
ホストパスプロビジョナー (HPP) を使用するには、storagePools スタンザで CSI ドライバーの関連付けられたストレージクラスを作成する必要があります。
仮想マシンは、ローカル PV に基づくデータボリュームを使用します。ローカル PV は特定のノードにバインドされます。ディスクイメージは仮想マシンで使用するために準備されますが、ローカルストレージ PV がすでに固定されたノードに仮想マシンをスケジュールすることができない可能性があります。
この問題を解決するには、Kubernetes Pod スケジューラーを使用して、永続ボリューム要求 (PVC) を正しいノードの PV にバインドします。volumeBindingMode パラメーターが WaitForFirstConsumer に設定された StorageClass 値を使用することにより、PV のバインディングおよびプロビジョニングは、Pod が PVC を使用して作成されるまで遅延します。
10.5.1.2. storagePools スタンザを使用した CSI ドライバーのストレージクラスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ホストパスプロビジョナー (HPP) を使用するには、コンテナーストレージインターフェイス (CSI) ドライバーに関連するストレージクラスを作成する必要があります。
ストレージクラスの作成時に、ストレージクラスに属する永続ボリューム (PV) の動的プロビジョニングに影響するパラメーターを設定します。StorageClass オブジェクトの作成後には、このオブジェクトのパラメーターを更新できません。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
storageclass_csi.yamlファイルを作成して、ストレージクラスを定義します。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: hostpath-csi provisioner: kubevirt.io.hostpath-provisioner reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer parameters: storagePool: my-storage-pool-
reclaimPolicyは、ユーザーが PVC を削除したときに、基礎となるストレージが削除されるか保持されるかを定義します。reclaimPolicyには、DeleteおよびRetainの 2 つの値があります。値を指定しない場合、デフォルト値はDeleteです。 volumeBindingModeは、PV 作成のタイミングを定義します。この例では、WaitForFirstConsumer設定により、スケジューラーが特定のノードに Pod を割り当てるまで、PV の作成が遅延されます。注記仮想マシンは、特定のノード上に存在するローカル PV に基づいたデータボリュームを使用します。システムが仮想マシン用のディスクイメージを準備する際、スケジューラーはローカルストレージ PV を固定したノードに仮想マシンを配置しない場合があります。
+ この問題を解決するには、Kubernetes Pod スケジューラーを使用して、永続ボリューム要求 (PVC) を正しいノードの PV にバインドします。
StorageClassのvolumeBindingModeパラメーターをWaitForFirstConsumerに設定すると、PVC を使用する Pod が作成されるまで PV のバインディングとプロビジョニングが遅延されます。-
parameters.storagePoolは、HPP カスタムリソース (CR) で定義されているストレージプールの名前を定義します。
-
- ファイルを保存して終了します。
次のコマンドを実行して、
StorageClassオブジェクトを作成します。$ oc create -f storageclass_csi.yaml