NKP の Kubernetes クラスタに、Nutanix Enterprise AI(NAI)2.6 を展開してみます。今回は、Nutanix Files Storage で NFS サーバーを利用する、NKP クラスタの Storage Class を作成します。
前回はこちら。
今回の内容です。
1. Nutanix Files Storage NFS サーバーの作成
Prism Element で、Nutanix Files Storage の NFS サーバーを作成します。
Prism Element の「ファイル サーバー」画面を開き、「+ File Server」をクリックします。

「ベーシック」画面で次のパラメータを入力します。
- 名前:nai-fs-01
- ドメイン:NFS サーバーに設定するドメイン名
- ファイル サーバー容量:1 TiB
そして、ファイル サーバーの FSVM 台数を調整するため「カスタマイズ」をクリックします。

「マニュアルで設定する」をクリックします。

FSVM の台数を入力して、「保存」をクリックします。本来は 3台以上にすべきですが、今回はラボ環境なので 1台にしてリソースを節約します。
- ファイル サーバー VMS の数:1

FSVM の台数が「1」になったことを確認して、「次へ」をクリックします。

「クライアント ネットワーク」画面で、ネットワーク情報を入力して、「次へ」をクリックします。
- VLAN:IPAM を有効化してあるサブネットを選択(例では vlan-0-ipam)
- NFS クライアントからマウントする際に指定する IP アドレスはこちら
- 後続の Storage Class 設定では、このレンジのアドレスを指定します
- DNS Resolver IP(コンマ区切り):参照する DNS サーバーを入力
- NTP サーバー(コンマ区切り):参照する NTP サーバーを入力

「ストレージ ネットワーク」で、FSVM から CVM に接続するネットワークの情報を入力します。本来はクライアント ネットワークとは別の VLAN(サブネット)を指定しますが、ラボ環境なので、同じ VLAN を指定しています。
- VLAN:IPAM を有効化してあるサブネットを選択(例では vlan-0-ipam)

「ディレクトリ サービス」画面では、(ディレクトリ情報ではなく)NFS プロトコル関連の情報を指定して「次へ」をクリックします。
- NFS プロトコルの使用:ON
- NFS 詳細オプションを表示:ON
- すべてのエクスポートに対してデフォルトで NFSv3 を有効にする:OFF
- すべてのエクスポートに対してデフォルトで NFSv4 を有効にする:ON

「サマリー」画面では、デフォルトのまま「Create」をクリックします。

しばらく待つと、NFS サーバーが作成されます。ファイル サーバー(nai-fs-01)を選択し、「クライアント サイド ネットワーク」→「View IPs」をクリックすると、クライアントからのマウント時に指定する IP アドレスが表示されます。
- Client Side IP Addresses:10.1.7.223

2. NFS Share の作成
Prism Element の「ファイル サーバー」画面で、さきほど作成したファイル サーバーの「Launch Files Console」を開きます。
- ファイル サーバー:nai-fs-01

「Shares & Exports」タブを開き、「New Share or Export」をクリックします。

「Basic」画面では、作成する NFS Share の名前を入力して「Next」をクリックします。
- Name:nai-nfs-01

「General Settings」画面は、そのまま「Next」をクリックします。

「Protocol Settings and Permissions」画面では、下記を選択して「Next」をクリックします。
- Squash:All Squash

「Summary」画面で「Create」をクリックすると、NFS Share の作成が開始されます。

NFS Share が作成されるので、マウント時に指定するパスを確認しておきます。
- Share/Export Path:/nai-nfs-01

3. Storage Class の作成
作業用 Linux マシンで、NKP の Kubernetes クラスタに Storage Class を作成します。
NKP クラスタには、デフォルトでは NFS 用の Storage Class が作成されていません。ちなみに、この例では dkp-object-store という Storage Class が作成されていますが、これは NKP 管理クラスタ展開直後は作成されていないはずです。
gowatana@nkp-work-02:~$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE dkp-object-store kommander.ceph.rook.io/bucket Delete Immediate false 23m nutanix-volume (default) csi.nutanix.com Delete WaitForFirstConsumer true 32h
下記のような YAML ファイルを用意します。
sc_nai-nfs-sotrage.yaml
- L5:Storage Class の名前は nai-nfs-storage
- L7:NFS Share のパスは /nai-nfs-01
- L8:NFS サーバーのアドレスは 10.1.7.223(FSVM が複数台の場合は FQDN)
- L12:PVC 作成時に PV をバインドする(NAI の要件)
Nutanix Files Storage の NFS Share を使用する Storage Class を作成します。
gowatana@nkp-work-02:~$ kubectl apply -f sc_nai-nfs-sotrage.yaml storageclass.storage.k8s.io/nai-nfs-storage created
これで、Storage Class が追加されました。
gowatana@nkp-work-02:~$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE dkp-object-store kommander.ceph.rook.io/bucket Delete Immediate false 171m nai-nfs-storage csi.nutanix.com Delete Immediate false 72s nutanix-volume (default) csi.nutanix.com Delete WaitForFirstConsumer true 34h
4. NFS PVC 作成による動作確認
ドキュメントを参考に、下記のように PVC の YAML ファイルを作成します。
test-rwx-pvc.yml
PVC を作成します。
gowatana@nkp-work-02:~$ kubectl apply -f test-rwx-pvc.yml persistentvolumeclaim/test-rwx-pvc created
PVC が作成され、PV がバインドされたことを確認します
gowatana@nkp-work-02:~$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE test-rwx-pvc Bound pvc-e36b2025-2c8e-42db-a010-ddc3ccf3a245 1Gi RWX nai-nfs-storage5s
PVC の volumePath を確認すると、NFS サーバーの /nai-nfs-01 配下に作成されたディレクトリが PV として利用されていることがわかります。
gowatana@nkp-work-02:~$ kubectl get pv pvc-e36b2025-2c8e-42db-a010-ddc3ccf3a245 -o yaml
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: csi.nutanix.com
volume.kubernetes.io/provisioner-deletion-secret-name: ""
volume.kubernetes.io/provisioner-deletion-secret-namespace: ""
creationTimestamp: "2026-03-27T15:14:03Z"
finalizers:
- external-provisioner.volume.kubernetes.io/finalizer
- kubernetes.io/pv-protection
name: pvc-e36b2025-2c8e-42db-a010-ddc3ccf3a245
resourceVersion: "2826402"
uid: abf2b0a6-2c42-464e-b0d3-9d35d0465e7b
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: test-rwx-pvc
namespace: default
resourceVersion: "2826393"
uid: e36b2025-2c8e-42db-a010-ddc3ccf3a245
csi:
driver: csi.nutanix.com
fsType: ext4
volumeAttributes:
nfsServer: 10.1.7.223
storage.kubernetes.io/csiProvisionerIdentity: 1774499420526-4712-csi.nutanix.com
volumePath: /nai-nfs-01/pvc-e36b2025-2c8e-42db-a010-ddc3ccf3a245
volumeHandle: NutanixFiles-static-MTAuMS43LjIyMzovbmFpLW5mcy0wMQ==-pvc-e36b2025-2c8e-42db-a010-ddc3ccf3a245
persistentVolumeReclaimPolicy: Delete
storageClassName: nai-nfs-storage
volumeMode: Filesystem
status:
lastPhaseTransitionTime: "2026-03-27T15:14:03Z"
phase: Bound
作成した PVC は、下記のように削除しておきます。
gowatana@nkp-work-02:~$ kubectl describe pvc test-rwx-pvc
つづく。
