おうちクラスタ向けにNFSのStorage Classを設定する

注意事項

この記事は、Notion AIに対して

  • 問題と解決策の概要
  • 例示用のコード

を渡して生成した実験的な記事になります。

はじめに

この記事では、KubernetesでのNFSクライアントの設定方法について説明します。

NFSサーバのセットアップ

まず、NFSサーバをセットアップする必要があります。以下の手順を実行してください。

  1. NFSサーバにしたいマシン上で、nfs-kernel-serverパッケージをインストールします。
  2. NFS用のディレクトリを作成します。例えば、/mnt/share/nfsとします。
  3. NFSサーバの設定を行います。例えば、IPアドレス192.168.0.0/24からの読み書きを許可する場合、以下の設定を行います。

     echo "/mnt/share/nfs  192.168.0.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)" | sudo tee -a /etc/exports
    
  4. NFSサーバを起動します。例えば、以下のコマンドを実行します。

     sudo systemctl enable --now nfs-server
    

NFSクライアントのセットアップ

各ノードにNFSに接続するためのパッケージをインストールする必要があります。以下の手順を実行してください。

sudo apt install nfs-common

nfs-subdir-external-provisionerのデプロイ

nfs-subdir-external-provisionerを使用して、NFSクライアントをデプロイすることができます。

github.com

おうちクラスタでは、Argo CDを使っているのでApplicationを定義します。

  apiVersion: argoproj.io/v1alpha1
  kind: Application
  metadata:
    name: nfs-subdir-external-provisioner
    finalizers:
    - resources-finalizer.argocd.argoproj.io
  spec:
    project: default
    source:
      chart: nfs-subdir-external-provisioner
      repoURL: <https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/>
      targetRevision: 4.0.18
      helm:
        releaseName: nfs-subdir-external-provisioner
        parameters:
        - name: nfs.server
          value: control-plane.local # NFSサーバのドメイン/IPアドレス
        - name: nfs.path
          value: /mnt/share/nfs # NFSサーバのディレクトリパス
    destination:
      server: "<https://kubernetes.default.svc>"
      namespace: default
    syncPolicy:
      syncOptions:
      - CreateNamespace=true
      automated:
        prune: true
        selfHeal: true

これで、nfs-clientという名前のStorage Classが定義されます。
かなり簡単ですね。

WordPressでのNFSクライアントの設定

最後に、WordPressNFSクライアントを使用する方法を説明します。
今回は例として、BitnamiのWordPressのHelm Chartで使用するStorage Classを設定します。 例えば、以下のようにvalues.yamlを設定します。

global:
  storageClass: nfs-client # nfs-subdir-external-provisionerで作成されたStorage Class

NFSサーバにWordPressのデータが展開されるようになります。

おわりに

この記事では、KubernetesでのNFSクライアントの設定方法について説明しました。
NFSクライアントを使用することで、複数のPodで同じデータを共有することができるようになります。

参考

こちらのブログを参考に作業をしていました。

sminamot-dev.hatenablog.com