精通k8s(17)存储系统-NFS

B站影视 电影资讯 2025-08-24 20:12 3

摘要:它的原理比较简单,在服务端创建目录A,然后在客户机上创建一个目录B,最后用A来挂载B,那么客户端再打开本地的B目录就相当于打开A目录,这样就实现了共享。对于服务端来说,就像是开了一个服务器,拓扑图如下:

它的原理比较简单,在服务端创建目录A,然后在客户机上创建一个目录B,最后用A来挂载B,那么客户端再打开本地的B目录就相当于打开A目录,这样就实现了共享。对于服务端来说,就像是开了一个服务器,拓扑图如下:

nfs的好处在于它是通过网络协议通信的,可以远程访问。

上一篇讲到hostPath,它也有缺点,就是绑定了机器,比如说Pod换个机器运行时,说不定就没有绑定的那个目录或文件了,可以认为是节点级别的,而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 rpcbindsystemctl enable nfs-serversystemctl start rpcbindsystemctl 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的Pod,想把它的主页目录映射到NFS的目录上,那么我这个nginx无论调度到哪台机器上,都可以从NFS中读取主页。

/nfs/data/nginx-pv是共享的NFS目录,/usr/share/nginx/html是Nginx默认网页的根目录,用/nfs/data/nginx-pv来挂载/usr/share/nginx/html,这样就可以从NFS中读取主页了。

#创建用于nginx映射的目录mkdir -p /nfs/data/nginx-pv#在此目录中创建一个index.html文件用于观察结果vim index.html

hello nginx!!!

#配置文件名:nginx-deploy-nfs-test.ymlapiVersion: apps/v1kind: Deploymentmetadata:labels:app: nginx-pv-demoname: nginx-pv-demospec:replicas: 2selector:matchLabels:app: nginx-pv-demotemplate:metadata:labels:app: nginx-pv-demospec:containers:- image: nginxname: nginxports:- containerPort: 80volumeMounts:- name: html # 卷挂载名称,与下面 volumes 对应mountPath: /usr/share/nginx/html # Nginx 默认网页根目录volumes:- name: html # 卷名称nfs:server: 192.168.234.100 # NFS 服务器 IPpath: /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.11210.244.36.107

(2)执行curl

curl 10.244.36.112#看到正确的结果:

hello nginx!!!

#删除deploykubectl delete deploy nginx-pv-demo#删除部署文件rm -rf nginx-deploy-nfs-test.yml

来源:恋爱脑一点号

相关推荐