blog

システム運用|KubernetesクラスタにダイナミックNFS設定をセットアップする方法

この記事では、クラスタ内でダイナミックNFS設定をセットアップする方法を紹介します。...

Nov 1, 2025 · 5 min. read
シェア

この記事では、KubernetesクラスターでダイナミックNFS設定をセットアップする方法を紹介します。

KubernetesのダイナミックNFSストレージプロビジョニングでは、Kubernetesアプリケーション用のNFSボリュームをオンデマンドで自動的に構成および管理できます。手動操作や事前設定されたストレージを使用することなく、永続ボリュームと永続ボリューム宣言を作成できます。

NFSコンフィギュレータは、PVを動的に作成し、PVCにバインドする役割を果たします。

前提条件

  • プリインストールされたKubernetesクラスタ
  • Kubernetesクラスタ管理者権限を持つ一般ユーザー
  • インターネット接続

早速、ステップに入りましょう:

ステップ1:NFSサーバーの準備

私の場合、KubernetesのマスターノードにNFSサーバーをインストールします。マスターノードにログインし、以下のコマンドを実行します:

  1. $ sudo apt update
  2. $ sudo apt install nfs-kernel-server -y

以下のフォルダを作成し、NFSを使用して共有します:

  1. $ sudo mkdir /opt/dynamic-storage
  2. $ sudo chown -R nobody:nogroup /opt/dynamic-storage
  3. $ sudo chmod 777 /opt/dynamic-storage

/etc/exports 以下のエントリーを追加します:

  1. $ sudo vi /etc/exports
  2. /opt/dynamic-storage .1.0/24(rw,sync,no_subtree_check)

ファイルを保存して閉じます。

注意:展開に適したネットワークをエクスポートファイルで変更することを忘れないでください。

上記の変更を有効にするには、以下を実行してください:

  1. $ sudo exportfs -a
  2. $ sudo systemctl restart nfs-kernel-server
  3. $ sudo systemctl status nfs-kernel-server

ワーカーノードで、以下の apt コマンドを使用して nfs-common パッケージをインストールします。

  1. $ sudo apt install nfs-common -y

ステップ2: NFS Client Configuratorのインストールと設定

NFSサブディレクトリ外部プロビジョナは、KubernetesクラスタにNFSクライアントプロビジョナをデプロイします。プロビジョナーは、NFSストレージでサポートされる永続ボリュームと永続ボリューム宣言を動的に作成および管理する役割を果たします。

したがって、NFSサブディレクトリ外部コンフィグレータをインストールするには、まず以下のコマンドセットを使用してhelmをインストールします:

  1. $ curl -fsSL -o get_helm.sh https://../////--3
  2. $ chmod 700 get_helm.sh
  3. $ ./get_helm.sh

以下のコマンドを実行して、 helm リポジトリを有効にします:

  1. $ helm repo add nfs-subdir-external-provisioner https://-../---er

コンフィギュレーターをデプロイするには、以下の helm コマンドを使用します:

  1. $ helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=.1.139 --set nfs.path=/opt/dynamic-storage

上記のhelmコマンドは、 nfs-provisioning ネームスペースを自動的に作成し、NFSコンフィギュレーターのコンテナーポッド/デプロイメント、nfs-clientという名前のストレージクラスをインストールし、必要なrbacを作成します。

  1. $ kubectl get all -n nfs-provisioning
  2. $ kubectl get sc -n nfs-provisioning

上記の出力により、コンフィギュレータ・コンテナ・ポッドとストレージ・クラスが正常に作成されたことが確認できます。

ステップ3:永続ボリューム宣言の作成

コンテナポッドまたはデプロイメント用のストレージを要求するPVCを作成してみましょう。PVCは、ストレージクラス nfs-client 特定の量のストレージを要求します:

  1. $ vi demo-pvc.yml
  2. kind: PersistentVolumeClaim
  3. apiVersion: v1
  4. metadata:
  5. name: demo-claim
  6. namespace: nfs-provisioning
  7. storageClassName: nfs-client
  8. accessModes:
  9. - ReadWriteMany
  10. resources:
  11. requests:
  12. storage: 10Mi

ファイルを保存して閉じます。

次の kubectl コマンドを実行して、上記で作成したYMLファイルを使用してPVCを作成します:

  1. $ kubectl create -f demo-pvc.yml

PVCとPVが作成されていることを確認します:

  1. $ kubectl get pv,pvc -n nfs-provisioning

上記の出力は、PVとPVCが正常に作成されたことを示しています。

ステップ4:ダイナミックNFS設定のテストと検証

ダイナミック NFS 構成をテストして検証するには、以下の YML ファイルを使用してテスト・コンテナ・ポッドを起動します:

  1. $ vi test-pod.yml
  2. kind: Pod
  3. apiVersion: v1
  4. metadata:
  5. name: test-pod
  6. namespace: nfs-provisioning
  7. containers:
  8. - name: test-pod
  9. image: busybox:latest
  10. command:
  11. - "/bin/sh"
  12. - "-c"
  13. - "touch /mnt/SUCCESS && sleep 600"
  14. volumeMounts:
  15. - name: nfs-pvc
  16. mountPath: "/mnt"
  17. restartPolicy: "Never"
  18. volumes:
  19. - name: nfs-pvc
  20. persistentVolumeClaim:
  21. claimName: demo-claim

以下の kubectl コマンドを使用して、コンテナポッドをデプロイします:

  1. $ kubectl create -f test-pod.yml

test-pod 状態を確認してください:

  1. $ kubectl get pods -n nfs-provisioning

コンテナ・ポッドにログインし、NFSボリュームがインストールされていることを確認します。

  1. $ kubectl exec -it test-pod -n nfs-provisioning /bin/sh

素晴らしいことに、上記のコンテナー・ポッドからの出力で、ダイナミックNFSボリュームがインストールされ、アクセス可能になっていることが確認できます。

最後にコンテナポッドを削除し、PVが自動的に削除されるかどうかを確認します。

  1. $ kubectl delete -f test-pod.yml
  2. $ kubectl delete -f demo-pvc.yml
  3. $ kubectl get pv,pvc -n nfs-provisioning

経由:

Read next