4.3.5. 将数据存储至共享卷中
Metering 默认不配置存储。但是,您可以使用任何 ReadWriteMany 持久性卷(PV)或置备 ReadWriteMany PV 的存储类作为 Metering 存储。
不建议在生产环境中使用 NFS。将 RHEL 上的 NFS 服务器用作存储后端可能无法满足 metering 要求,并可能无法提供 Metering Operator 正常工作所需的性能。
市场中的其他 NFS 实现可能没有这些问题,如 Parallel Network File System(pNFS)。pNFS 是一个带有分布式和并行功能的 NFS 实现。如需了解更多与此问题相关的信息,请联络相关的 NFS 厂商。
流程
修改
shared-storage.yaml
文件,以使用 ReadWriteMany 持久性卷进行存储: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
从以下配置选项中任选一个:
为 metering 创建部署 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
字段值完全匹配。
使用
nfs-server
角色配置Pod
资源对象: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 服务器镜像。
使用
nfs-server
角色配置Service
资源对象: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 存储以及所有相关资源对象的具体配置,会取决于您用于 Metering 存储的 NFS 服务器镜像。