4.3.5. 共有ボリュームへのデータの保存
メータリングはデフォルトでストレージを設定しません。ただし、メータリングストレージ用に ReadWriteMany 永続ボリューム (PV) または ReadWriteMany PV をプロビジョニングするすべてのストレージクラスを使用できます。
NFS を実稼働環境で使用することは推奨されません。RHEL の NFS サーバーをストレージバックエンドとして使用すると、メータリングの要件を満たせず、メータリング Operator が適切に機能するために必要なパフォーマンスを出せない可能性があります。
marketplace の他の NFS 実装にはこれらの問題が検出されない可能性があります (Parallel Network File System (pNFS) など)。pNFS は分散および並列機能を持つ NFS 実装です。OpenShift Container Platform コアコンポーネントに対して実施された可能性のあるテストに関する詳細情報は、個別の NFS 実装ベンダーにお問い合わせください。
手順
ストレージに ReadWriteMany 永続ボリュームを使用するには、
shared-storage.yaml
ファイルを変更します。shared-storage.yaml
ファイルの例apiVersion: metering.openshift.io/v1 kind: MeteringConfig metadata: name: "operator-metering" spec: storage: type: "hive" hive: type: "sharedPVC" sharedPVC: claimName: "metering-nfs" 1 # Uncomment the lines below to provision a new PVC using the specified storageClass. 2 # createPVC: true # storageClass: "my-nfs-storage-class" # size: 5Gi
以下のいずれかの設定オプションを選択します。
- 1
storage.hive.sharedPVC.claimName
を既存の ReadWriteMany 永続ボリューム要求 (PVC) の名前に設定します。この設定は、動的ボリュームプロビジョニングがない場合や、永続ボリュームの作成方法をより詳細に制御する必要がある場合に必要です。- 2
storage.hive.sharedPVC.createPVC
をtrue
に設定し、storage.hive.sharedPVC.storageClass
を ReadWriteMany アクセスモードのストレージクラスの名前に設定します。この設定は、動的ボリュームプロビジョニングを使用して、ボリュームを自動的に作成します。
メータリング用に NFS サーバーをデプロイするために必要な以下のリソースオブジェクトを作成します。
oc create -f <file-name>.yaml
コマンドを使用してオブジェクト YAML ファイルを作成します。PersistentVolume
リソースオブジェクトを設定します。nfs_persistentvolume.yaml
ファイルの例apiVersion: v1 kind: PersistentVolume metadata: name: nfs labels: role: nfs-server spec: capacity: storage: 5Gi accessModes: - ReadWriteMany storageClassName: nfs-server 1 nfs: path: "/" server: REPLACEME persistentVolumeReclaimPolicy: Delete
- 1
[kind: StorageClass].metadata.name
フィールドの値に一致する必要があります。
Pod
リソースオブジェクトをnfs-server
ロールで設定します。nfs_server.yaml
ファイルの例apiVersion: v1 kind: Pod metadata: name: nfs-server labels: role: nfs-server spec: containers: - name: nfs-server image: <image_name> 1 imagePullPolicy: IfNotPresent ports: - name: nfs containerPort: 2049 securityContext: privileged: true volumeMounts: - mountPath: "/mnt/data" name: local volumes: - name: local emptyDir: {}
- 1
- NFS サーバーイメージをインストールします。
Service
リソースオブジェクトをnfs-server
ロールで設定します。nfs_service.yaml
ファイルの例:apiVersion: v1 kind: Service metadata: name: nfs-service labels: role: nfs-server spec: ports: - name: 2049-tcp port: 2049 protocol: TCP targetPort: 2049 selector: role: nfs-server sessionAffinity: None type: ClusterIP
StorageClass
リソースオブジェクトを設定します。nfs_storageclass.yaml
ファイルの例apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-server 1 provisioner: example.com/nfs parameters: archiveOnDelete: "false" reclaimPolicy: Delete volumeBindingMode: Immediate
- 1
[kind: PersistentVolume].spec.storageClassName
フィールドの値に一致する必要があります。
NFS ストレージおよび関連するリソースオブジェクトの設定は、メータリングストレージに使用する NFS サーバーイメージによって異なります。