13.4. OpenShift クラスターから外部で NFS エクスポートを使用する
OpenShift クラスター外の NFS クライアントは、以前に作成された PVC によって作成された NFS エクスポートをマウントできます。
手順
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
Kubernetes LoadBalancer Service を作成して、OpenShift クラスターの外部に NFS サーバーを公開します。以下の例では、LoadBalancer Service を作成し、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 で取得した値に置き換えます。接続情報を収集します。外部クライアントがエクスポートに接続するために必要な情報は、PVC 用に作成された永続ボリューム (PV) と、前の手順で作成された LoadBalancer Service のステータスから取得されます。
PV から共有パスを取得します。
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
前に取得した 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
NFS サーバーの Ingress アドレスを取得します。サービスの Ingress ステータスには、複数のアドレスがある場合があります。外部クライアントに使用するアドレスを選択します。以下の例では、ホスト名
ingress-id.somedomain.com
という 1 つのアドレスしかありません。$ oc -n openshift-storage get service rook-ceph-nfs-ocs-storagecluster-cephnfs-load-balancer --output jsonpath='{.status.loadBalancer.ingress}' [{"hostname":"ingress-id.somedomain.com"}]
前の手順の共有パスと Ingress アドレスを使用して、外部クライアントを接続します。次の例では、エクスポートをクライアントのディレクトリーパス
/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 サーバーへの Ingress を許可するためのネットワークリソースの設定に、まだ時間がかかっている可能性があります。