Kubernetes環境におけるNFSサーバーのセットアップ

このドキュメントでは、KubernetesクラスタのコンポーネントとしてNFS (Network File System) サーバーをセットアップする手順について解説します。NFSは、ネットワーク経由でファイルシステムを共有するためのプロトコルであり、Kubernetesでは永続ボリュームのストレージバックエンドとして利用されます。セキュリティ上の理由から、NFSは信頼できる内部ネットワークでの利用が推奨されます。

環境準備

以下の3台のUbuntu 22.04マシンを使用します。ubuntu-server をNFSサーバーとして、残りの2台をクライアントとして設定します。

IPアドレス ホスト名
10.53.207.10 ubuntu-server
10.53.207.11 ubuntu-client1
10.53.207.12 ubuntu-client2

NFSサーバーの設定

NFSサーバーパッケージのインストール

NFSサーバーのカーネルモジュールをインストールします。

sudo apt update
sudo apt install nfs-kernel-server -y

NFSバージョン確認

NFSのサポートバージョンを確認します。

cat /proc/fs/nfsd/versions

共有ディレクトリの作成

NFSで共有するディレクトリを作成します。ここでは、NFSv4用のデータディレクトリと、バッキングストア用のディレクトリ、そしてNFS共有のルートディレクトリを作成します。

sudo mkdir -p /srv/nfs4/data
sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /nfs_share
sudo chmod 777 -R /nfs_share

fstabの設定

/etc/fstab ファイルを編集し、NFS共有ディレクトリをローカルパスにバインドマウントします。これにより、NFSサーバー上の指定ディレクトリが、Kubernetesの永続ボリュームとして利用可能になります。

# /etc/fstab
/nfs_share /srv/nfs4/data none bind 0 0

設定後、以下のコマンドでマウントします。

sudo mount -a

エクスポート設定 (/etc/exports)

/etc/exports ファイルを編集して、NFS共有ディレクトリとアクセス権限を設定します。ここでは、/nfs_share ディレクトリを共有します。

全クライアントへの読み書き許可 (非推奨、テスト用):

/nfs_share *(rw,sync,no_subtree_check,no_root_squash,insecure)

特定のクライアントへのアクセス制御:

# ubuntu-client1 には読み書き権限、ubuntu-client2 には読み取り専用権限
/nfs_share 10.53.207.11(rw,sync,no_subtree_check) 10.53.207.12(ro,sync,no_subtree_check)

エクスポートオプションの説明:

  • rw: クライアントに読み書きアクセス権を付与します。
  • sync: 変更がディスクに書き込まれるまで応答を待機します。データの永続性は向上しますが、パフォーマンスは低下します。
  • no_subtree_check: サブツリーチェックを無効にします。ファイルがリネームされた場合などに発生する問題を回避するため、通常はこのオプションを有効にします。
  • no_root_squash: クライアントのrootユーザーからのリクエストを、サーバー上のrootユーザーとして処理します。デフォルトではroot権限は制限されますが、このオプションで解除します。セキュリティリスクを伴うため、注意が必要です。
  • insecure: 非セキュアなポートからの接続を許可します (通常は使用しません)。

NFSサービスの再起動と有効化

設定を反映させるためにNFSサービスを再起動し、システム起動時に自動起動するように設定します。

sudo exportfs -rv
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server

NFSクライアントの設定

NFSクライアントパッケージのインストール

NFSクライアントに必要なパッケージをインストールします。

sudo apt update
sudo apt install nfs-common -y

NFS共有の確認とマウント

NFSサーバー上の共有リストを確認し、クライアントマシンにマウントします。

共有リストの確認:

ubuntu-server のIPアドレスと共有ディレクトリを指定して、NFSサーバーからエクスポートされているファイルシステムを確認します。

showmount -e ubuntu-server

NFS共有のマウント:

クライアントマシン上のマウントポイントを作成し、NFS共有をマウントします。

# マウントポイントの作成
sudo mkdir -p /mnt/nfs_share

# NFS共有のマウント (ubuntu-server の /nfs_share を /mnt/nfs_share にマウント)
sudo mount -t nfs ubuntu-server:/nfs_share /mnt/nfs_share

マウント後、df -h コマンドなどで正しくマウントされているか確認できます。

タグ: NFS Kubernetes storage Ubuntu Network File System

7月16日 22:52 投稿