对于运行在云服务商中的k8s集群(比如GKE等),有比较完善的存储卷支持。而自建的k8s集群,这方面往往比较麻烦。经过调查,发现在自建k8s集群中使用nfs卷是一个比较简单可行的方案。nfs服务器可以独立于k8s集群,便于集中管理集群中的卷和文件。
本文内容包括:
安装配置nfs服务器
使用nfs客户端连接nfs共享文件夹
在k8s集群中通过手动方式创建nfs卷
本文实验环境为ubuntu/Debian,对于centos等系统,只在于nfs的安装和配置略有不同。
安装配置nfs服务器
sudo apt-get update
sudo apt install nfs-kernel-server
sudo mkdir -p /mnt/sharedfolder
sudo chown nobody:nogroup /mnt/sharedfolder
sudo chmod 777 /mnt/sharedfolder
sudo nano /etc/exports
复制代码
步骤1: 安装nfs-kernel-server
sudo apt-get update
sudo apt install nfs-kernel-server
复制代码
步骤2: 创建导出目录
导出目录是用于与nfs客户端共享的目录,这个目录可以是linux上的任意目录。这里我们使用一个创建的新目录。
sudo mkdir -p /mnt/sharedfolder
复制代码
步骤3: 通过nfs输出文件为客户端分配服务器访问权限
编辑/etc/exports文件
sudo vi /etc/exports
复制代码
在文件中追加配置,可以分配不同类型的访问权限:
分配给单个客户端访问权限的配置格式:
/mnt/sharedfolder clientIP(rw,sync,no_subtree_check)
复制代码分配给多个客户端访问权限的配置格式:
/mnt/sharedfolder client1IP(rw,sync,no_subtree_check)
/mnt/sharedfolder client2IP(rw,sync,no_subtree_check)
复制代码通过指定一个完整的客户端子集来分配多个客户端访问权限的配置格式:
/mnt/sharedfolder subnetIP/24(rw,sync,no_subtree_check)
复制代码
示例:
这是分配给192.168.0.101客户端读写权限的示例配置
/mnt/sharedfolder 192.168.0.101(rw,sync,no_subtree_check)
复制代码
步骤4: 输出共享目录
执行命令,输出共享目录:
sudo exportfs -a
复制代码
重启nfs-kernel-server服务,使所有配置生效
sudo systemctl restart nfs-kernel-server
复制代码
使用nfs客户端连接nfs共享文件夹
可以使用win10的资源管理器连接nfs服务器进行测试,也可以使用linux连接测试。
这里使用局域网另一台ubuntu