K8S Strore0:存储抽象(NFS挂载)

K8S Strore0:存储抽象(NFS挂载)

Copy of Kubernetes

1. 前言

最新Ubuntu参考
📌
UbuntuTips10:Ubuntu挂载NFS
  • 存储层
    • Glusterfs
    • NFS
    • CephFS
数据存储层实现机器数据共享
  • 这里以NFS为例,后续考虑搭建数据库集群,如MongoDB分片集群

2. 环境准备

确保主机Master与Node节点SSH连接

2.1 所有节点安装NFS

# 1. 安装NFS root@docker01:/home# sudo apt install nfs-kernel-server # 2. 查看NFS状态 root@docker03:~# sudo systemctl status nfs-server
notion image

2.2 主节点

docker01
  • 创建共享目录
# NFS主节点,暴露文件夹 echo "/nfs/data/ *(insecure,rw,sync,no_subtree_check,no_root_squash)" > /etc/exports # 创建文件 root@docker01:/# mkdir -p /nfs/data # 开机启动,--now现在启动 root@docker01:/# systemctl enable rpcbind --now root@docker01:/# systemctl enable nfs-server --now # 配置生效 root@docker01:/# exportfs -r # 检查一下暴露的目录 root@docker01:/# exportfs /nfs/data <world>
对于出口的基本选择:
选项
描述
rw
允许在NFS卷上进行读写请求。
ro
仅允许读取NFS卷上的请求。
anongid=GID
阅读以上内容(anonuid = UID)
anonuid=UID
这些选项显式设置匿名帐户的uid和gid。此选项主要对PC / NFS客户端有用,在PC / NFS客户端上,您可能希望所有请求看起来都来自一个用户。例如,请在下面的示例部分中考虑/ home / joe的导出条目,该条目将所有请求映射到uid 150。
no_all_squash
关闭所有壁球。(默认)
all_squash
将所有uid和gid映射到匿名用户。对于NFS导出的公共FTP目录,新闻假脱机目录等有用。
no_root_squash
关闭根挤压。此选项主要对无磁盘客户端有用。
root_squash
将请求从uid / gid 0映射到匿名uid / gid。请注意,这不适用于可能同样敏感的任何其他uid或gid,例如用户bin或组人员。
no_subtree_check
此选项禁用子树检查,这对安全性有轻微的影响,但在某些情况下可以提高可靠性。
subtree_check
此选项启用子树检查。(默认)
no_wdelay
如果还设置了异步,则此选项无效。如果NFS服务器怀疑另一个相关的写请求可能正在进行中或可能很快到达,则通常会稍稍延迟向磁盘提交写请求。这样一来,就可以将多个写入请求提交到磁盘,从而提高性能。如果NFS服务器主要接收小的无关请求,则此行为实际上可能会降低性能,因此no_wdelay可用于将其关闭。
wdelay
如果怀疑另一个相关的写请求可能正在进行中或可能很快到达,请稍稍延迟向磁盘提交写请求。(默认)
insecure
此选项接受所有端口。
secure
此选项要求请求源自小于IPPORT_RESERVED(1024)的Internet端口。(默认)
async
此选项允许NFS服务器违反NFS协议并在对该请求进行的任何更改提交到稳定存储之前答复该请求。
sync
仅在将更改提交到稳定存储后才回复请求。(默认)

2.3 从节点

 
docker02、docker03、docker04
# 在Ubuntu20.04中安装客户端:nfs-common bob@ubuntu-20-04:~$ sudo apt install nfs-common
# 1. 检查哪个目录可以挂载,showmount -e 主节点地址, showmount -e 192.168.92.138 # 2. 给从节点每台机器创建目录,目录名无所谓,我这里保持一致 root@docker02:/home# mkdir -p /nfs/data # 3. 挂载 root@docker02:/home# mount -t nfs 192.168.92.138:/nfs/data /nfs/data # 4开机自动挂载,在/etc/fstab里添加 192.168.92.138:/nfs/data /nfs/datat nfs rw 0
notion image
来到主节点创建文件,写入文件
root@docker01:/nfs/data# ls root@docker01:/nfs/data# echo "Hello,Master_NFS" > a root@docker01:/nfs/data# ls a
在docker02等从节点查看,内容同步
root@docker02:/home# cd /nfs/data/ root@docker02:/nfs/data# ls a root@docker02:/nfs/data# cat a Hello,Master_NFS # 给a文件追加信息 root@docker02:/nfs/data# echo "Hello,Docker02_NFS" >> a root@docker02:/nfs/data# cat a Hello,Master_NFS Hello,Docker02_NFS
在docker01中也能同步
root@docker01:/nfs/data# cat a Hello,Master_NFS Hello,Docker02_NFS root@docker01:/nfs/data#