Bootstrap

NFS文件服务器

持久化存储:NFS

1 NFS 工作原理

  1. NFS(Network File System)是一种分布式文件系统协议,它允许用户在网络上通过一个网络共享访问文件,就如同访问本地存储一样。
  2. NFS 工作时,服务端将文件系统中的一个或多个目录“导出”,使得客户端可以“挂载”这些目录到客户端本地的文件系统树中。一旦挂载,用户和应用程序就可以访问这些目录中的文件,就像访问本地文件一样。

2 在项目中的使用场景

  1. 如果待传输数据存储在k8s工作节点的文件系统:在 Broker 部署一个 NFS 服务器,工作节点(如果有传输数据的需求)可以作为 NFS 客户端挂载到 NFS 服务器,进而通过共享目录进行文件/数据传输。
  2. 如果待传输数据存储在Pods的文件系统:利用 k8s 持久卷在 Pod 上部署 NFS 客户端,当 Pod 有传输数据的需求时挂载到 NFS 服务器,进而通过共享目录进行文件/数据传输。

3 目前完成

上述的场景一:在 Broker 中部署 NFS 服务器,Pve2 的 master 节点部署 NFS 客户端并挂载到 NFS 服务器上,实现Broker和 Pve2 的 master 节点 可进行某个目录的数据共享。具体步骤:

3.1 在 Broker 部署 NFS 服务器
1. 安装 NFS 软件包
sudo apt update
sudo apt install nfs-kernel-server
2. 配置共享数据目录
  • 创建一个目录来存放共享数据,例如 /var/nfs/general(这个目录可以根据需要进行更改):

    sudo mkdir -p /var/nfs/general
    sudo chown nobody:nogroup /var/nfs/general
    
  • 编辑/etc/exports 文件,配置 NFS 服务器数据导出目录及访问 NFS 服务器的客户端机器权限:

    /var/nfs/general *(rw,sync,no_subtree_check)
    

    * 代表 ,客户端网段无限制,均可以挂载到服务器。

    也可设置网段,比如:

    /var/nfs/general 172.100.0.0/24(rw,sync,no_subtree_check)
    
  • 应用配置:

    sudo exportfs -ra
    

[!NOTE]

检查 NFS 状态以及配置 NFS 相关的命令:

  1. 修改完 /etc/exports 文件后,重新导出共享:
sudo exportfs -arv
  1. 重启 NFS 服务
sudo systemctl restart nfs-server
  1. 检查 NFS 服务状态
sudo systemctl status nfs-server
  1. 设置 NFS 服务器在系统启动时自动运行
sudo systemctl enable nfs-kernel-server
  1. 查看导出(共享)目录
sudo exportfs -v

image-20241121222535844

3.2 在 Pve2 的 master 部署 NFS 客户端
1. 创建挂载点
sudo mkdir /mnt/nfs
2. 安装 NFS 软件包
sudo apt update
sudo apt install nfs-kernel-server
3. 挂载 NFS 共享目录
sudo mount -t nfs 172.100.0.109:/var/nfs/general /mnt/nfs
sudo mount -o rw -t nfs 172.100.0.109:/var/nfs/pvc /mnt/nfs-pvc
4. 检查挂载状态

使用 df -h 命令查看文件系统的挂载情况和磁盘空间使用情况。这个命令会列出所有挂载的文件系统及其大小、已用空间、可用空间、使用百分比和挂载点。

df -h

image-20241121222556959

​ 至此,broker 的 /var/nfs/general 和 pve2 的 master 的 /mnt/nfs 目录共享,不管谁创建/删除/添加文件都会保持同步。

参考链接:
Kubernetes 持久化存储之 NFS

;