8.18.2.3. ホストパスプロビジョナーを使用したローカルストレージの有効化

ホストパスプロビジョナーをデプロイし、仮想マシンがローカルストレージを使用できるようにするには、最初に HostPathProvisioner カスタムリソースを作成します。

前提条件

  • ホストパスプロビジョナーが作成する永続ボリューム (PV) 用に、各ノードにバッキングディレクトリーを作成すること。

    重要

    / パーティションは Red Hat Enterprise Linux CoreOS(RHCOS)で読み取り専用であるため、バッキングディレクトリーはファイルシステムのルートディレクトリーに配置することはできません。たとえば、/var/<directory_name> を使用することができますが、/& lt;directory_name> を使用することはできません

  • SELinux コンテキスト container_file_t を各ノードの PV バッキングディレクトリーに適用すること。以下は例になります。

    $ sudo chcon -t container_file_t -R <backing_directory_path>
    注記

    Red Hat Enterprise Linux CoreOS(RHCOS)8 ワーカーを使用する場合は、代わりに MachineConfig マニフェストを使用して SELinux を設定する必要があります。

手順

  1. HostPathProvisioner カスタムリソースファイルを作成します。以下は例になります。

    $ touch hostpathprovisioner_cr.yaml
  2. ファイルを編集し、spec.pathConfig.path の値がホストパスプロビジョナーが PV を作成するディレクトリーであることを確認します。以下は例になります。

    apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
    kind: HostPathProvisioner
    metadata:
      name: hostpath-provisioner
    spec:
      imagePullPolicy: IfNotPresent
      pathConfig:
        path: "<backing_directory_path>" 1
        useNamingPrefix: false 2
      workload: 3
    1
    プロビジョナーが PV を作成するバッキングディレクトリーを指定します。このディレクトリーは、ファイルシステムの root ディレクトリー(/)に配置してはいけません
    2
    作成された PV にバインドされる永続ボリューム要求 (PVC) の名前をディレクトリー名のプレフィックスとして使用する場合には、この値を true に変更します。
    3
    オプション: spec.workload フィールドを使用して、ホストパスプロビジョナーのノードの配置ルールを設定できます。
    注記

    バッキングディレクトリーを作成していない場合、プロビジョナーはこの作成を試行します。container_file_t SELinux コンテキストを適用していない場合、これにより Permission denied エラーが生じる可能性があります。

  3. openshift-cnv namespace にカスタムリソースを作成します。

    $ oc create -f hostpathprovisioner_cr.yaml -n openshift-cnv