17.4. 在 OpenShift 集群中消耗 NFS 导出
在容器中运行或 OpenShift virtualization 虚拟机中运行的 NFS 客户端可以挂载由之前创建的 PVC 创建的 NFS 导出。
流程
- 启用 - nfs标志后,单服务器 CephNFS 由 Rook 部署。您需要获取要在下一步中使用的- nfs-ganesha服务器的- ceph_nfs字段的值:- oc get pods -n openshift-storage | grep rook-ceph-nfs - $ oc get pods -n openshift-storage | grep rook-ceph-nfs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc describe pod <name of the rook-ceph-nfs pod> | grep ceph_nfs - $ oc describe pod <name of the rook-ceph-nfs pod> | grep ceph_nfs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如: - oc describe pod rook-ceph-nfs-ocs-storagecluster-cephnfs-a-7bb484b4bf-bbdhs | grep ceph_nfs - $ oc describe pod rook-ceph-nfs-ocs-storagecluster-cephnfs-a-7bb484b4bf-bbdhs | grep ceph_nfs ceph_nfs=my-nfs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过创建 Kubernetes LoadBalancer 服务,在 OpenShift 集群外公开 NFS 服务器。以下示例创建了一个 LoadBalancer 服务,并引用 OpenShift Data Foundation 创建的 NFS 服务器。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 将 - <my-nfs>替换为在第 1 步中获取的值。
- 收集连接信息。NFS 客户端需要连接到导出的信息来自为 PVC 创建的持久性卷(PV),以及上一步中创建的 LoadBalancer 服务的状态。 - 从 PV 获取共享路径。 - 获取与 NFS 导出的 PVC 关联的 PV 名称: - oc get pvc <pvc_name> --output jsonpath='{.spec.volumeName}'- $ oc get pvc <pvc_name> --output jsonpath='{.spec.volumeName}' pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 将 - <pvc_name>替换为您自己的 PVC 名称。例如:- oc get pvc pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.volumeName}' pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d- oc get pvc pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.volumeName}' pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用前面获取的 PV 名称获取 NFS 导出的共享路径: - oc get pv pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.csi.volumeAttributes.share}'- $ oc get pv pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.csi.volumeAttributes.share}' /0001-0011-openshift-storage-0000000000000001-ba9426ab-d61b-11ec-9ffd-0a580a800215- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 获取 NFS 服务器的入口地址。服务的入口状态可以有多个地址。选择用于 NFS 客户端所需的选项。在以下示例中,只有一个地址:主机名 - ingress-id.somedomain.com。- oc -n openshift-storage get service rook-ceph-nfs-ocs-storagecluster-cephnfs-load-balancer --output jsonpath='{.status.loadBalancer.ingress}'- $ oc -n openshift-storage get service rook-ceph-nfs-ocs-storagecluster-cephnfs-load-balancer --output jsonpath='{.status.loadBalancer.ingress}' [{"hostname":"ingress-id.somedomain.com"}]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 使用上一步中的共享路径和入口地址连接外部客户端。以下示例将导出挂载到客户端的目录路径 - /export/mount/path:- mount -t nfs4 -o proto=tcp ingress-id.somedomain.com:/0001-0011-openshift-storage-0000000000000001-ba9426ab-d61b-11ec-9ffd-0a580a800215 /export/mount/path - $ mount -t nfs4 -o proto=tcp ingress-id.somedomain.com:/0001-0011-openshift-storage-0000000000000001-ba9426ab-d61b-11ec-9ffd-0a580a800215 /export/mount/path- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果这仍然无法正常工作,则可能是 Kubernetes 环境仍然需要时间来配置网络资源,以允许到 NFS 服务器入口。