搜索

14.4. 从 OpenShift 集群外部使用 NFS 导出

download PDF

OpenShift 集群外部的 NFS 客户端可以挂载由之前创建的 PVC 创建的 NFS 导出。

流程

  1. 启用 nfs 标志后,单服务器 CephNFS 由 Rook 部署。您需要获取要在下一步中使用的 nfs-ganesha 服务器的 ceph_nfs 字段的值:

    $ oc get pods -n openshift-storage | grep rook-ceph-nfs
    $ oc describe pod  <name of the rook-ceph-nfs pod> | grep ceph_nfs

    例如:

    $ oc describe pod rook-ceph-nfs-ocs-storagecluster-cephnfs-a-7bb484b4bf-bbdhs | grep ceph_nfs
      ceph_nfs=my-nfs
  2. 通过创建 Kubernetes LoadBalancer 服务,在 OpenShift 集群外公开 NFS 服务器。以下示例创建了一个 LoadBalancer 服务,并引用 OpenShift Data Foundation 创建的 NFS 服务器。

    apiVersion: v1
    kind: Service
    metadata:
     name: rook-ceph-nfs-ocs-storagecluster-cephnfs-load-balancer
     namespace: openshift-storage
    spec:
     ports:
       - name: nfs
         port: 2049
     type: LoadBalancer
     externalTrafficPolicy: Local
     selector:
       app: rook-ceph-nfs
       ceph_nfs: <my-nfs>
       instance: a

    <my-nfs> 替换为在第 1 步中获取的值。

  3. 收集连接信息。外部客户端需要连接到导出的信息来自为 PVC 创建的持久性卷(PV)以及上一步中创建的 LoadBalancer 服务的状态。

    1. 从 PV 获取共享路径。

      1. 获取与 NFS 导出的 PVC 关联的 PV 名称:

        $ oc get pvc <pvc_name> --output jsonpath='{.spec.volumeName}'
        pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d

        <pvc_name> 替换为您自己的 PVC 名称。例如:

        oc get pvc pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d --output jsonpath='{.spec.volumeName}'
        pvc-39c5c467-d9d3-4898-84f7-936ea52fd99d
      2. 使用前面获取的 PV 名称获取 NFS 导出的共享路径:

        $ 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
    2. 获取 NFS 服务器的入口地址。服务的入口状态可以有多个地址。选择外部客户端所需的使用方法。在以下示例中,只有一个地址:主机名 ingress-id.somedomain.com

      $ oc -n openshift-storage get service rook-ceph-nfs-ocs-storagecluster-cephnfs-load-balancer --output jsonpath='{.status.loadBalancer.ingress}'
      [{"hostname":"ingress-id.somedomain.com"}]
  4. 使用上一步中的共享路径和入口地址连接外部客户端。以下示例将导出挂载到客户端的目录路径 /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

    如果这仍然无法正常工作,则可能是 Kubernetes 环境仍然需要时间来配置网络资源,以允许到 NFS 服务器入口。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.