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-nfsCopy 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_nfsCopy 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-nfsCopy 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-936ea52fd99dCopy 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-936ea52fd99doc get pvc pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.volumeName}' pvc-39c5c467-d9d3-4898-84f7-936ea52fd99dCopy 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-0a580a800215Copy 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
使用上一步中的共享路径和入口地址连接 NFS 客户端。以下示例将导出挂载到客户端的目录路径
/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/pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这仍然无法正常工作,则可能是 Kubernetes 环境仍然需要时间来配置网络资源,以允许到 NFS 服务器入口。