メインコンテンツにスキップ

k8s NFS マウント

NFS サービスインストール


## ubuntu服务端(250926)
# 更新软件包列表
sudo apt update
sudo apt install -y nfs-kernel-server
# 启动 NFS 服务
sudo systemctl start nfs-kernel-server
# 设置开机自启
sudo systemctl enable nfs-kernel-server
# 检查服务状态(确认是否正常运行)
sudo systemctl status nfs-kernel-server

NFS 共有ディレクトリの設定

# 创建共享目录
sudo mkdir -p /data/k8s/volume/postgresql/postgresql-data

# 编辑 exports 文件
sudo nano /etc/exports

# 添加如下配置(允许 Kubernetes 节点访问,根据实际网络调整权限)
# 172.20.0.0/16:替换为你的 Kubernetes 节点所在的 IP 段(确保包含所有需要挂载的节点)。
# rw:读写权限;sync:同步写入;no_root_squash:允许 root 用户操作(Kubernetes 通常需要此权限)。
# /data/k8s/volume/postgresql/postgresql-data  172.20.0.0/16(rw,sync,no_root_squash,no_subtree_check)
# 这里配置上节点的网段和容器网段
/data/k8s/volume/postgresql/postgresql-data  10.0.0.0/16(rw,sync,no_root_squash,no_subtree_check)  172.20.0.0/16(rw,sync,no_root_squash,no_subtree_check)

# 保存退出后,重新加载 NFS 配置
sudo exportfs -r

# 验证共享是否生效
sudo exportfs -v

テストマウント

完成上述步骤后,在需要挂载的 Kubernetes 节点上,重新尝试手动挂载测试:

# 创建临时目录
mkdir -p /tmp/test-nfs

# 手动挂载
sudo mount -t nfs master2:/data/k8s/volume/postgresql/postgresql-data /tmp/test-nfs

# 若挂载成功,可通过以下命令验证
df -h | grep /tmp/test-nfs

# 测试完成后卸载
sudo umount /tmp/test-nfs

マウントが成功している場合、マウントを解除するために MountVountVolume の実行に失敗:を再再起動してください。

# Issue Pod(Kubernetesは自動的に再作成)
kubectl delete pod <pod-name> -n <namespace>

質問

Bitnami PostgreSQL のイメージは、デフォルトでUID1001とGID1001の非rootユーザによって実行されます(root化されていない)

# 切换到 NFS 共享目录的父目录
cd /data/k8s/volume/postgresql/

# 查看当前权限(确认是 root:root)
ls -ld postgresql-data

# 修改属主和属组为 1001(Bitnami 镜像的默认用户)
sudo chown -R 1001:1001 postgresql-data/

# 设置目录权限为 700(PostgreSQL 要求数据目录权限严格,避免其他用户访问)
sudo chmod -R 700 postgresql-data/

# 确认修改结果(应显示 drwx------ 1001 1001)
ls -ld postgresql-data