NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Enterprise AI 2.6 をデプロイしてみる。Part-04:NFS サーバーと Storage Class の準備

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 の要件)

gist.github.com

 

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

gist.github.com

 

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-storage                    5s

 

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

 

つづく。

 

©2026 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。