[云原生专题-37]:K8S - 核心概念 - 存储抽象- 搭建NFS网络文件系统与常见操作命令

网友投稿 239 2022-11-03

[云原生专题-37]:K8S - 核心概念 - 存储抽象- 搭建NFS网络文件系统与常见操作命令

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

​目录​

​​第1步:NFS规划​​

​​第2步:搭建NFS server​​

​​2.1 安装NFS网络文件系统工具链​​

​​2.2 创建共享目录​​

​​2.3 暴露共享目录​​

​​2.4 启动NFS服务​​

​​2.5 测试​​

​​第3步:搭建NFS Client节点​​

​​3.1 安装NFS工具链​​

​​3.2 启动NFS服务​​

​​3.3 查看服务器上有哪些可以mount的NFS目录​​

​​3.4 创建本地目录,可以有不同的名称​​

​​3.5 把本地目录mount到远程目录​​

​​3.6 测试​​

​​第4步:在Client虚拟机上,使用K8S的原生的配置文件的方式挂NFS​​

​​4.2 应用部署​​

​​4.3 测试​​

第1步:NFS规划

1个NFS server,2个NFS client, 三者共享相同的文件系统 /nfs/data目录

任何一个节点更改 /nfs/data中的内容,其他节点都能够看到。

任何一个新的节点,要加入到NFS,只需要mount到/nfs/data即可。

第2步:搭建NFS server与操作命令

2.1 安装NFS网络文件系统工具链

yum -y install nfs-utils

2.2 创建共享目录

# 在server上创建nfs共享目录mkdir -p /nfs/data/#修改权限,支持读、写、执行操作chmod -R 777 /nfs/data

2.3 暴露共享目录

# 编辑export文件, 把新创建的目录/nfs/data/ export到网络中vim /etc/exports/nfs/data *(rw,no_root_squash,sync)# 配置生效,exportfs -r#查看是否生效exportfs

2.4 启动NFS服务

#启动rpcbind、nfs server服务sudo service nfs-server start #查看 RPC 服务的注册状况rpcinfo -p localhost

2.5 测试

# 写入一个测试文件echo "hello nfs server" > /nfs/data/test-server.txt# 通过云平台获得私网节点的私网地址: 172.24.130.172

第3步:搭建NFS Client节点与操作命令

3.1 安装NFS工具链

#所有节点安装客户端yum -y install nfs-utils

3.2 启动NFS服务

NA

3.3 查看服务器上有哪些可以mount的NFS目录

# 查看服务器上有哪些可以mount的NFS目录[root@k8s-node1 data]# showmount -e 172.24.130.172Export list for 172.24.130.172:/nfs/data *

3.4 创建本地目录,可以有不同的名称

#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmountmkdir -p /nfs/data

3.5 把本地目录mount到远程目录

mount -t nfs 172.24.130.172:/nfs/data /nfs/data

3.6 测试

# 写入一个测试文件echo "hello nfs server" > /nfs/data/test-client.txt$ cd /nfs/data/$ ls test-client.txt test-server.txt

至此,无论在client,还是在server上,都可以共享网络文件系统目录:/nfs/data/

第4步:在Client虚拟机上,使用K8S的原生的配置文件的方式挂NFS

​4.1 编辑配置文件:depolyment.yaml​

​在创建Deployment的时候,同时创建NFS文件系统​

apiVersion: apps/v1kind: Deploymentmetadata: labels: app: nginx-pv-demo name: nginx-pv-demospec: replicas: 2 selector: matchLabels: app: nginx-pv-demo template: metadata: labels: app: nginx-pv-demo spec: containers: - image: nginx name: nginx volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html nfs: server: 172.24.130.172 path: /nfs/data

mountPath: /usr/share/nginx/html =》 NFS Client端的Pod内部的贡献目录名server: 172.24.130.172                 =》NFS服务器的IP地址path: /nfs/data/nginx-pv                =》 NFS服务器端暴露出来的共享目录名

4.2 应用部署

$ touch deploy-nfs.yaml$ vi deploy-nfs.yaml$ kubectl apply -f deploy-nfs.yaml[root@k8s-node1 ~]# kubectl get podNAME READY STATUS RESTARTS AGEmy-deploy-8686b49bbd-b8w65 1/1 Running 0 6h6mmy-deploy-8686b49bbd-f2m4c 1/1 Running 0 6h5mmy-deploy-8686b49bbd-jz5cx 1/1 Running 0 6h6mnginx-pv-demo-db866fc95-6d9nz 1/1 Running 0 36snginx-pv-demo-db866fc95-qpx48 1/1 Running 0 36s

备注:

nginx-pv-demo-db866fc95-6d9nz   1/1     Running   0          36s

nginx-pv-demo-db866fc95-qpx48   1/1     Running   0          36s

新创建了一个deployment,包含2个pod,在这2个pod的容器中,自动启动NFS Client,并mount到:

nfs:

server: 172.24.130.172

path: /nfs/data

4.3 测试

(1)通过dashboard进入Pod内部的命令行

(2)或通过如下的命令进入pod内部

$ kubectl get pods$ kubectl exec -it nginx-pv-demo-db866fc95-6d9nz -- /bin/s# 在pod中的mount点:mountPath: /usr/share/nginx/html$ cd /usr/share/nginx/html$ lstest-client.txt test-server.txt

新创建的pod,自动mount远程的服务器172.24.130.172:/nfs/data, 本地的mount点为:/usr/share/nginx/html/

​(3)修改和同步文件​

# 在POD内部$ cd /usr/share/nginx/html/$ touch my-index.html# 在pod外部的服务器上[root@k8s-master1 data]# lsmy-index.html test-client.txt test-server.txt

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java十道入门易踩坑题分析前篇
下一篇:Danfo.js提供高性能、直观易用的数据结构,支持结构化数据的操作和处理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~