网站首页 > 技术教程 正文
nfs的工作原理
它的原理比较简单,在服务端创建目录A,然后在客户机上创建一个目录B,最后用A来挂载B,那么客户端再打开本地的B目录就相当于打开A目录,这样就实现了共享。对于服务端来说,就像是开了一个服务器,拓扑图如下:
nfs的好处在于它是通过网络协议通信的,可以远程访问。
hostPath模式和NFS模式的对比
上一篇讲到hostPath,它也有缺点,就是绑定了机器,比如说Pod换个机器运行时,说不定就没有绑定的那个目录或文件了,可以认为是节点级别的,而NFS是统一的服务端,大家都可以从这个端挂载目录,就像我们都可以打开百度网页一样,属于集群级别的,因此区别一目了然,在实际工作中需要哪种模式可以看场景。
下面写下NFS安装和具体操作。
安装NFS
(1)在每台机器上都安装nfs-utils
yum install -y nfs-utils
nfs-utils包括客户端和服务端的工具软件。
(2)挑选一台机器充当服务端(我这里选择k8s的master节点),在上面执行命令
# 在master 执行以下命令
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports
# 执行以下命令,启动 nfs 服务;创建共享目录
mkdir -p /nfs/data
# 在master执行
systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server
# 使配置生效
exportfs -r
#检查配置是否生效
exportfs
(3)在客户机上执行下面命令
#查看master的挂载目录
showmount -e 192.168.234.100
#创建本地目录
mkdir -p /nfs/data
#映射master的目录
mount -t nfs \
192.168.234.100:/nfs/data /nfs/data
经过上面几步,就将服务端和客户端配置完成了。
实验:nginx映射NFS上的目录
需求:
我有一个nginx的Pod,想把它的主页目录映射到NFS的目录上,那么我这个nginx无论调度到哪台机器上,都可以从NFS中读取主页。
实验拓扑图
/nfs/data/nginx-pv是共享的NFS目录,/usr/share/nginx/html是Nginx默认网页的根目录,用/nfs/data/nginx-pv来挂载/usr/share/nginx/html,这样就可以从NFS中读取主页了。
实验准备:nfs上创建一个主页目录用于挂载
#创建用于nginx映射的目录
mkdir -p /nfs/data/nginx-pv
#在此目录中创建一个index.html文件用于观察结果
vim index.html
<h2>hello nginx!!!</h2>
实验准备:编写Pod部署文件并执行
#配置文件名:nginx-deploy-nfs-test.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-pv-demo
name: nginx-pv-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-pv-demo
template:
metadata:
labels:
app: nginx-pv-demo
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
volumeMounts:
- name: html # 卷挂载名称,与下面 volumes 对应
mountPath: /usr/share/nginx/html # Nginx 默认网页根目录
volumes:
- name: html # 卷名称
nfs:
server: 192.168.234.100 # NFS 服务器 IP
path: /nfs/data/nginx-pv # NFS 共享目录路径
readOnly: false # 可读写(默认)
k8s执行部署
kubectl apply -f nginx-deploy-nfs-test.yml
实验观察
(1)查看Pod地址
kubectl get pods -o wide
#可以看到两个Pod的地址:
10.244.36.112
10.244.36.107
(2)执行curl
curl 10.244.36.112
#看到正确的结果:
<h2>hello nginx!!!</h2>
实验结束的清理工作
#删除deploy
kubectl delete deploy nginx-pv-demo
#删除部署文件
rm -rf nginx-deploy-nfs-test.yml
总结
NFS采用统一的服务端模式,无论Pod移动到哪里,只要NFS是通的那么就可以共享目录。
猜你喜欢
- 2025-09-01 使用再生龙做Linux系统备份和还原
- 2025-09-01 Kubernetes问题排查|POD启动失败_kubectl启动pod
- 2025-09-01 windows11安装wsl配置目录挂载 驱动NVIDIA 安装DockerDesktop
- 2025-09-01 Milvus 实战 | 基于 Kubernetes 的分布式集群部署方案
- 2025-09-01 NFS-Ganesha内核窥探_ie内核浏览器
- 2025-09-01 OpenWrt 安装配置 Samba 实现网络文件共享
- 2025-09-01 Linux下通过AnySetup配置防火墙_linux系统防火墙怎么关闭
- 2025-09-01 阿里云国际站DBFS:阿里云DBFS如何快速部署和管理数据库文件?
- 2025-09-01 uv安装python及其依赖的加速方法_uvtools安装
- 2025-09-01 windows server 2025中挂载NFS存储
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)