6.5.3. 使用 NFS 后端部署的镜像服务
采用您使用 NFS 后端部署的 Image Service (glance)。要完成以下步骤,请确保您的环境满足以下条件:
- Storage 网络被传播到 Red Hat OpenStack Platform (RHOSP) control plane。
-
镜像服务可以访问存储网络,并通过端口
2049连接到 nfs-server。
先决条件
- 您已完成了以前的采用步骤。
在源云中,验证 overcloud 用来配置镜像服务后端的 NFS 参数。具体来说,在您的director Operator heat 模板中,找到以下变量来覆盖
/usr/share/openstack-tripleo-heat-templates/environments/storage目录中的glance-nfs.yaml文件提供的默认内容:GlanceBackend: file GlanceNfsEnabled: true GlanceNfsShare: 192.168.24.1:/var/nfs注意在本例中,GlanceBackend 变量显示镜像服务没有 NFS 后端的概念。
变量使用文件驱动程序,并在后台使用filesystem_store_datadir。filesystem_store_datadir映射到GlanceNfsShare变量提供的导出值,而不是/var/lib/glance/images/。如果您没有通过传播到 OpenShift (RHOSO)控制平面上的红帽 OpenStack 服务的网络导出GlanceNfsShare,则必须停止nfs-server并将导出重新映射到存储网络。在这样做前,请确保镜像服务在源 Controller 节点上停止。在 control plane 中,镜像服务附加到 Storage 网络,然后通过关联的
NetworkAttachmentsDefinition自定义资源(CR)传播,生成的 pod 已具有通过此网络处理镜像服务流量的正确权限。在部署的 RHOSP control plane 中,您可以通过检查NodeNetworkConfigPolicy(nncp)和NetworkAttachmentDefinition(net-attach-def)来验证网络映射是否与基于 director Operator 的环境中部署的相匹配。以下是您应该在 Red Hat OpenShift Container Platform (RHOCP)环境中检查的输出示例,以确保传播网络没有问题:$ oc get nncp NAME STATUS REASON enp6s0-crc-8cf2w-master-0 Available SuccessfullyConfigured $ oc get net-attach-def NAME ctlplane internalapi storage tenant $ oc get ipaddresspool -n metallb-system NAME AUTO ASSIGN AVOID BUGGY IPS ADDRESSES ctlplane true false ["192.168.122.80-192.168.122.90"] internalapi true false ["172.17.0.80-172.17.0.90"] storage true false ["172.18.0.80-172.18.0.90"] tenant true false ["172.19.0.80-172.19.0.90"]
流程
采用镜像服务,再创建一个新的
默认GlanceAPI实例,该实例与现有 NFS 共享连接:$ cat << EOF > glance_nfs_patch.yaml spec: extraMounts: - extraVol: - extraVolType: Nfs mounts: - mountPath: /var/lib/glance/images name: nfs propagation: - Glance volumes: - name: nfs nfs: path: <exported_path>1 server: <ip_address>2 name: r1 region: r1 glance: enabled: true template: databaseInstance: openstack customServiceConfig: | [DEFAULT] enabled_backends = default_backend:file [glance_store] default_backend = default_backend [default_backend] filesystem_store_datadir = /var/lib/glance/images/ storage: storageRequest: 10G keystoneEndpoint: nfs glanceAPIs: nfs: replicas: 3 type: single override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.803 spec: type: LoadBalancer networkAttachments: - storage EOF修补
OpenStackControlPlaneCR,以使用 NFS 后端部署镜像服务:$ oc patch openstackcontrolplane openstack --type=merge --patch-file glance_nfs_patch.yaml修补
OpenStackControlPlaneCR 以删除默认镜像服务:$ oc patch openstackcontrolplane openstack --type=json -p="[{'op': 'remove', 'path': '/spec/glance/template/glanceAPIs/default'}]"
验证
当
GlanceAPI处于活跃状态时,请确认您可以看到单个 API 实例:$ oc get pods -l service=glance NAME READY STATUS RESTARTS glance-nfs-single-0 2/2 Running 0 glance-nfs-single-1 2/2 Running 0 glance-nfs-single-2 2/2 Running 0确保 pod 的描述报告以下输出:
Mounts: ... nfs: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: {{ server ip address }} Path: {{ nfs export path }} ReadOnly: false ...检查指向
/var/lib/glance/images的挂载点是否已映射到您在新的默认GlanceAPI实例中定义的预期:nfs 服务器 ip和 nfs 路径$ oc rsh -c glance-api glance-default-single-0 sh-5.1# mount ... ... {{ ip address }}:/var/nfs on /var/lib/glance/images type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.18.0.5,local_lock=none,addr=172.18.0.5) ... ...确认 UUID 已在 NFS 节点上的导出的目录中创建。例如:
$ oc rsh openstackclient $ openstack image list sh-5.1$ curl -L -o /tmp/cirros-0.6.3-x86_64-disk.img http://download.cirros-cloud.net/0.6.3/cirros-0.6.3-x86_64-disk.img ... ... sh-5.1$ openstack image create --container-format bare --disk-format raw --file /tmp/cirros-0.6.3-x86_64-disk.img cirros ... ... sh-5.1$ openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 634482ca-4002-4a6d-b1d5-64502ad02630 | cirros | active | +--------------------------------------+--------+--------+在
nfs-server节点上,相同的uuid位于导出的/var/nfs中:$ ls /var/nfs/ 634482ca-4002-4a6d-b1d5-64502ad02630