5.3. 配置 NFS 后端
当您在镜像服务(glance)上挂载 NFS 共享时,镜像服务不管理该操作。镜像服务将数据写入文件系统,但不知道后端是一个 NFS 共享。
如果您使用 NFS 作为镜像服务后端,红帽建议以下最佳实践来降低风险:
- 使用可靠的生产级 NFS 后端。
- 确保网络传播到 OpenShift control plane,部署镜像服务,并且镜像服务具有指向网络的 NetworkAttachmentDefinition (NAD)。此配置可确保镜像服务 pod 可以访问 NFS 服务器。
- 设置底层文件系统权限。写入权限必须存在于用作存储的共享文件系统中。
-
确保运行
glance-api
进程的用户和组在本地文件系统上没有挂载点的写入权限。这意味着进程可以检测到可能的挂载失败,并在写尝试过程中将存储置于只读模式。
限制:
在 OpenShift 上的 Red Hat OpenStack Services (RHOSO)中,您无法在 pod 规格中设置客户端 NFS 挂载选项。您可以使用以下方法之一设置 NFS 挂载选项:
- 设置服务器端挂载选项。
-
使用
/etc/nfsmount.conf
。 - 使用带有挂载选项的 PersistentVolume 挂载 NFS 卷。
流程
打开
OpenStackControlPlane
CR 文件openstack_control_plane.yaml
,并在spec
部分添加extraMounts
参数,以添加 NFS 共享的导出路径和 IP 地址。该路径映射到/var/lib/glance/images
,其中镜像服务 API 存储并检索镜像:apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack ... spec: extraMounts: - extraVol: - extraVolType: Nfs mounts: - mountPath: /var/lib/glance/images name: nfs propagation: - Glance volumes: - name: nfs nfs: path: <nfs_export_path> server: <nfs_ip_address> name: r1 region: r1 ...
-
将
<nfs_export_path
> 替换为 NFS 共享的导出路径。 -
将
<nfs_ip_address
> 替换为 NFS 共享的 IP 地址。此 IP 地址必须是覆盖网络的一部分,该网络可由镜像服务访问。
-
将
在
glance
模板中添加以下参数,将 NFS 配置为后端:... spec: extraMounts: ... glance: template: glanceAPIs: default: type: single replicas: 3 # recommendation is 3 when deploying the service ... customServiceConfig: | [DEFAULT] enabled_backends = default_backend:file [glance_store] default_backend = default_backend [default_backend] filesystem_store_datadir = /var/lib/glance/images databaseInstance: openstack ...
注意配置 NFS 后端时,您必须将
类型设置为
单个
。默认情况下,镜像服务具有外部 API 服务的分割
部署类型,该服务可通过 Identity 服务(keystone)的公共和管理员端点访问,该服务可以通过 Identity 服务的内部端点访问。对于文件
后端,分割
部署类型无效,因为不同的 pod 访问同一文件共享。更新 control plane:
$ oc apply -f openstack_control_plane.yaml -n openstack
等待 RHOCP 创建与
OpenStackControlPlane
CR 相关的资源。运行以下命令来检查状态:$ oc get openstackcontrolplane -n openstack
当状态为 "Setup complete" 时,会创建
OpenStackControlPlane
资源。提示将
-w
选项附加到get
命令的末尾,以跟踪部署进度。