nfs
1.安装 NFS
yum -y install rpcbind nfs-utils
2.创建用于储存 NFS 的文件夹
mkdir -p /nfs
3.配置 NFS
# -bash: vim: command not found
# yum -y install vim
vim /etc/exports
/nfs *(rw,sync,all_squash,anonuid=0,anongid=0)
# rw:
# sync:
# all_squash:
# anonuid:
# anongid:
4.启动 rpcbind
# 查看状态
systemctl status rpcbind.service
# 查看开机自启状态
systemctl list-unit-files | grep rpcbind.service
# 启动
systemctl start rpcbind.service
# 设置开机自启
systemctl enable rpcbind.service
# 停止
systemctl stop rpcbind.service
# 关闭开机自启
systemctl disable rpcbind.service
5.启动 nfs 或者是 nfs-server
# 查看状态
systemctl status nfs.service
# 查看开机自启状态
systemctl list-unit-files | grep nfs.service
# 启动
systemctl start nfs.service
# 设置开机自启
systemctl enable nfs.service
# 停止
systemctl stop nfs.service
# 关闭开机自启
systemctl disable nfs.service
6.检查端口与进程
rpcinfo -p 127.0.0.1
[root@localhost ~]# rpcinfo -p 127.0.0.1
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 52921 status
100024 1 tcp 53664 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 40687 nlockmgr
100021 3 udp 40687 nlockmgr
100021 4 udp 40687 nlockmgr
100021 1 tcp 37193 nlockmgr
100021 3 tcp 37193 nlockmgr
100021 4 tcp 37193 nlockmgr
[root@localhost ~]#
7.查看NFS
showmount -e 127.0.0.1
[root@localhost ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/nfs *
[root@localhost ~]#
8.将NFS客户IP添加到信任区
# 将NFS客户端IP添加到信任区
firewall-cmd --zone=trusted --add-source=192.168.0.8 --permanent
# 重载防火墙
firewall-cmd --reload
# 查看信任区的配置
firewall-cmd --list-all --zone=trusted
9.测试
挂载(本机挂载,仅用于测试,其他Linux客户端挂载同理,客户端与服务端安装相同的软件)
mkdir -p /test/nfs
mount -t nfs 127.0.0.1:/nfs /test/nfs
# 永久挂载
# vim /etc/fstab
# 127.0.0.1:/nfs /test/nfs nfs defaults,_netdev 0 0
[root@localhost ~]# mkdir /test/nfs
[root@localhost ~]# mount -t nfs 127.0.0.1:/nfs /test/nfs
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 897M 0 897M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/ao-root 197G 1.6G 196G 1% /
/dev/sda1 1014M 155M 860M 16% /boot
127.0.0.1:/nfs 197G 1.6G 196G 1% /test/nfs
tmpfs 182M 0 182M 0% /run/user/0
[root@localhost ~]#
K8S中NFS安装和配置
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --version 4.0.17 \
--set nfs.server=192.168.1.43 \
--set nfs.path=/data/volumes/nfs \
--set image.repository=putianhui/nfs-subdir-external-provisioner \
--set image.tag=v4.0.2 \
--set storageClass.create=true \
--set storageClass.name=nfs-sc \
--set storageClass.reclaimPolicy=Retain
nfs.server:你的nfs服务器ip地址
nfs.path:nfs服务器共享的目录
image.repository:由于默认的仓库地址是k8s官方的谷歌仓库需要科学上网,我这里把镜像pull下来上传到了我自己的仓库下。
image.tag:镜像的版本
storageClass.create:自动创建一个存储类
storageClass.name:自动创建的存储类名称
storageClass.reclaimPolicy:自动创建存储类的回收规则,默认是delete
另一个方案
nfs-subdir-external-provisioner 使用方法
#下载
wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases/download/nfs-subdir-external-provisioner-4.0.16/nfs-subdir-external-provisioner-4.0.16.tgz
#解压
tar -xvf nfs-subdir-external-provisioner-4.0.16.tgz
#安装
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/ --set nfs.server=192.168.x.x --set nfs.path=/home/nfsxxxdir
#拉取镜像k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 失败,使用上面方式加载离线镜像,每个k8s的worker节点都要加载,或者push到私有镜像仓库