この記事では、KubernetesクラスターでダイナミックNFS設定をセットアップする方法を紹介します。
KubernetesのダイナミックNFSストレージプロビジョニングでは、Kubernetesアプリケーション用のNFSボリュームをオンデマンドで自動的に構成および管理できます。手動操作や事前設定されたストレージを使用することなく、永続ボリュームと永続ボリューム宣言を作成できます。
NFSコンフィギュレータは、PVを動的に作成し、PVCにバインドする役割を果たします。
前提条件
- プリインストールされたKubernetesクラスタ
- Kubernetesクラスタ管理者権限を持つ一般ユーザー
- インターネット接続
早速、ステップに入りましょう:
ステップ1:NFSサーバーの準備
私の場合、KubernetesのマスターノードにNFSサーバーをインストールします。マスターノードにログインし、以下のコマンドを実行します:
$ sudo apt update$ sudo apt install nfs-kernel-server -y
以下のフォルダを作成し、NFSを使用して共有します:
$ sudo mkdir /opt/dynamic-storage$ sudo chown -R nobody:nogroup /opt/dynamic-storage$ sudo chmod 777 /opt/dynamic-storage
/etc/exports 以下のエントリーを追加します:
$ sudo vi /etc/exports/opt/dynamic-storage .1.0/24(rw,sync,no_subtree_check)
ファイルを保存して閉じます。
注意:展開に適したネットワークをエクスポートファイルで変更することを忘れないでください。
上記の変更を有効にするには、以下を実行してください:
$ sudo exportfs -a$ sudo systemctl restart nfs-kernel-server$ sudo systemctl status nfs-kernel-server
ワーカーノードで、以下の apt コマンドを使用して nfs-common パッケージをインストールします。
$ sudo apt install nfs-common -y
ステップ2: NFS Client Configuratorのインストールと設定
NFSサブディレクトリ外部プロビジョナは、KubernetesクラスタにNFSクライアントプロビジョナをデプロイします。プロビジョナーは、NFSストレージでサポートされる永続ボリュームと永続ボリューム宣言を動的に作成および管理する役割を果たします。
したがって、NFSサブディレクトリ外部コンフィグレータをインストールするには、まず以下のコマンドセットを使用してhelmをインストールします:
$ curl -fsSL -o get_helm.sh https://../////--3$ chmod 700 get_helm.sh$ ./get_helm.sh
以下のコマンドを実行して、 helm リポジトリを有効にします:
$ helm repo add nfs-subdir-external-provisioner https://-../---er
コンフィギュレーターをデプロイするには、以下の helm コマンドを使用します:
$ 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を作成します。
$ kubectl get all -n nfs-provisioning$ kubectl get sc -n nfs-provisioning
上記の出力により、コンフィギュレータ・コンテナ・ポッドとストレージ・クラスが正常に作成されたことが確認できます。
ステップ3:永続ボリューム宣言の作成
コンテナポッドまたはデプロイメント用のストレージを要求するPVCを作成してみましょう。PVCは、ストレージクラス nfs-client 特定の量のストレージを要求します:
$ vi demo-pvc.ymlkind: PersistentVolumeClaimapiVersion: v1metadata:name: demo-claimnamespace: nfs-provisioningstorageClassName: nfs-clientaccessModes:- ReadWriteManyresources:requests:storage: 10Mi
ファイルを保存して閉じます。
次の kubectl コマンドを実行して、上記で作成したYMLファイルを使用してPVCを作成します:
$ kubectl create -f demo-pvc.yml
PVCとPVが作成されていることを確認します:
$ kubectl get pv,pvc -n nfs-provisioning
上記の出力は、PVとPVCが正常に作成されたことを示しています。
ステップ4:ダイナミックNFS設定のテストと検証
ダイナミック NFS 構成をテストして検証するには、以下の YML ファイルを使用してテスト・コンテナ・ポッドを起動します:
$ vi test-pod.ymlkind: PodapiVersion: v1metadata:name: test-podnamespace: nfs-provisioningcontainers:- name: test-podimage: busybox:latestcommand:- "/bin/sh"- "-c"- "touch /mnt/SUCCESS && sleep 600"volumeMounts:- name: nfs-pvcmountPath: "/mnt"restartPolicy: "Never"volumes:- name: nfs-pvcpersistentVolumeClaim:claimName: demo-claim
以下の kubectl コマンドを使用して、コンテナポッドをデプロイします:
$ kubectl create -f test-pod.yml
test-pod 状態を確認してください:
$ kubectl get pods -n nfs-provisioning
コンテナ・ポッドにログインし、NFSボリュームがインストールされていることを確認します。
$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh
素晴らしいことに、上記のコンテナー・ポッドからの出力で、ダイナミックNFSボリュームがインストールされ、アクセス可能になっていることが確認できます。
最後にコンテナポッドを削除し、PVが自動的に削除されるかどうかを確認します。
$ kubectl delete -f test-pod.yml$ kubectl delete -f demo-pvc.yml$ kubectl get pv,pvc -n nfs-provisioning
経由:





