第十章 集群安装NFS以及NFS卸载客户端和服务端

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 第十章 集群安装NFS以及NFS卸载客户端和服务端

1.为什么使用 NFS

  1. 稳定性和可移植性:NFS是一个稳定且可移植的网络文件系统,基于RPC远程过程调用实现,使得在不同的机器之间共享文件系统资源变得简单可靠。
  2. 扩展性和高性能:NFS具备可扩展和高性能等特性,能够满足企业级应用的质量标准。随着网络速度的增加和延迟的降低,NFS系统一直是通过网络提供文件系统服务的有竞争力的选择。
  3. 易用性:NFS的使用相对简单,只需进行相应的配置即可。在Kubernetes中,可以使用NFS作为后端存储,以提供持久化存储和共享存储卷。
  4. 动态存储供应:Kubernetes集群管理员可以通过提供不同的存储类,满足用户不同的服务质量级别、备份策略和任意策略要求的存储需求。通过动态存储卷供应,Kubernetes能够按照用户的需要自动创建其需要的存储。
  5. 最小化影响程序读写速度:NFS挂载建议最小范围,防止影响程序读写速度。

说明:我这里是演示,一般生产使用的是 minio和 Ceph 支持并发数量高。

2.一般在 master 节点安装NFS服务端其他安装 客户端,这是我的集群信息

[root@master01 /]# kubectl get node -owide
NAME       STATUS   ROLES    AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
master01   Ready    master   28d   v1.18.0   192.168.1.19   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://18.6.3
node01     Ready    <none>   28d   v1.18.0   192.168.1.20   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://18.6.3

3.在master安装服务端

sudo yum install nfs-utils

4.设置开机启动并启动服务端以及运行状态

# 开机启动
sudo systemctl enable nfs-server.service
 
# 启动服务
sudo yum install nfs-utils
 
# 查看运行状态
systemctl status nfs-server

5.创建一个要共享的目录,并确保该目录存在于NFS服务器上,记得给读写权限

# 创建一个共享目录
sudo mkdir /mnt/nfs
 
sudo chmod -R 777 /mnt/nfs

6.编辑NFS的导出配置文件 /etc/exports

# 编辑这个文件
sudo vi /etc/exports
 
# 以下就是文件内容
/mnt/nfs *(rw,sync,no_root_squash)
 
 
# 或者
sudo vi /etc/exports
# 限制为一个网段中
/mnt/nfs 192.168.1.0/24(rw,sync,all_squash)

/mnt/nfs : 这是共享的目录的路径。任何连接到此NFS服务器的客户端都将能够访问此目录。

* : 这是一个通配符,表示允许任何IP地址访问。

rw : 这表示读写权限。这意味着客户端可以读取和写入此目录。

sync : 这表示在数据完全写入磁盘后才返回写入操作的响应。

no_root_squash : 这表示允许root用户在远程机器上访问NFS时具有root权限。默认情况下,NFS会对root用户的请求进行“squash”,使其权限降低。通过设置 no_root_squash,可以允许root用户具有与NFS服务器上的root用户相同的权限。

7.修改完成重启或者重载配置

sudo systemctl restart nfs-server
 
sudo exportfs -r

8.其他机器安装客户端进行挂载

sudo yum install nfs-utils

9.查看或者验证是否可以挂载

[root@node01 ~]# sudo showmount -e 192.168.1.19
Export list for 192.168.1.19:
/mnt/nfs *

10.在客户端创建 /mnt/nfs_client 文件夹用于本地挂载到远程服务器

[root@node01 ~]# mkdir -p /mnt/nfs_client
[root@node01 ~]# sudo mount -t nfs 192.168.1.19:/mnt/nfs /mnt/nfs_client
或者
[root@node01 ~]# sudo mount -t nfs -o nolock 192.168.1.19:/mnt/nfs /mnt/nfs_client
 
 
 
使用Server服务器上的/mnt/nfs目录挂载到本地的/mnt/nfs_client目录。
 
 
mount:挂载文件系统或网络共享。
-t nfs:指定使用NFS(网络文件系统)协议。
-o nolock:指定挂载选项,其中nolock表示不启用文件锁定。
server:/mnt/nfs:指定远程服务器的挂载源,即服务器上的/mnt/nfs目录。
/mnt/nfs_client:指定本地挂载点,即在本地的/mnt/nfs_client目录下挂载。

11.使用 df -h 查看是否挂载成功

[root@node01 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G     0  1.9G   0% /dev/shm
tmpfs                  1.9G   13M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda3              196G  6.3G  190G   4% /
/dev/sda1              297M  163M  134M  55% /boot
tmpfs                  378M   12K  378M   1% /run/user/42
tmpfs                  1.9G   12K  1.9G   1% /var/lib/kubelet/pods/ea15f950-54aa-4580-a955-14e31b831e3f/volumes/kubernetes.io~secret/flannel-token-zj27l
tmpfs                  1.9G   12K  1.9G   1% /var/lib/kubelet/pods/918ef5c8-331c-4d15-916a-81dcc39560a6/volumes/kubernetes.io~secret/kube-proxy-token-297ql
overlay                196G  6.3G  190G   4% /var/lib/docker/overlay2/a0b2deadf006e745a337289e152155722894977dfac65e42b7d2674cf3d6deb4/merged
overlay                196G  6.3G  190G   4% /var/lib/docker/overlay2/ceebcdd2cea6dbe9c875619b235fdd0e24e59f0cc8ba0d1dc4e2a8af8f137aa7/merged
shm                     64M     0   64M   0% /var/lib/docker/containers/475581e61b8a5b95ed62c8b06348e3428f6616ed4731378a8c6edd89bc435a70/mounts/shm
shm                     64M     0   64M   0% /var/lib/docker/containers/557451820ade91ad6e00059ec28b11651e87cb1a5b5f670f0e8194940bcb909c/mounts/shm
overlay                196G  6.3G  190G   4% /var/lib/docker/overlay2/74b8d5bd35277205e5749be7694e22d38726428d1b80956a8fd069a85f781a30/merged
overlay                196G  6.3G  190G   4% /var/lib/docker/overlay2/d4a2f50524158db4dd8092c586527bc66339a7dbaeb98adbce98d800af82b27a/merged
tmpfs                  378M     0  378M   0% /run/user/0
192.168.1.19:/mnt/nfs  196G  7.0G  189G   4% /mnt/nfs_client

12.测试在Client创建一个文件,在Server查看是否存在

13.遇到的异常

1.卸载失败(每一个解决方式都可以)
umount.nfs4: /mnt/nfs_client: device is busy。这个意识要卸载但是被占用无法卸载
#解决-1 查看哪个进程正在使用这个挂载点,直接kill 掉就可以
[root@localhost nfs_client]# sudo lsof /mnt/nfs_client
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    2170 root  cwd    DIR   0,43       21 51418476 /mnt/nfs_client (192.168.1.19:/mnt/nfs)
sudo    2632 root  cwd    DIR   0,43       21 51418476 /mnt/nfs_client (192.168.1.19:/mnt/nfs)
lsof    2634 root  cwd    DIR   0,43       21 51418476 /mnt/nfs_client (192.168.1.19:/mnt/nfs)
lsof    2635 root  cwd    DIR   0,43       21 51418476 /mnt/nfs_client (192.168.1.19:/mnt/nfs)
#解决-2 重启Server
sudo systemctl restart rpcbind  
sudo systemctl restart nfs-server
 
#解决-3强制卸载
[root@localhost nfs_client]# umount -f /mnt/nfs_client/
[root@localhost nfs_client]# fuser -cu /mnt/nfs_client/
/mnt/nfs_client:      2170c(root)
# root占用
fuser 是用于查看哪些用户和进程正在使用文件、目录或套接字的命令。
-c 选项表示同时显示进程和用户。
-u 选项表示显示用户名。
/mnt/nfs_client/ 是需要查看的挂载点的路径。
执行该命令后,会列出所有正在访问该挂载点的进程和对应的用户。
[root@localhost ~]# fuser -ck /mnt/nfs_client/
 
fuser 是用于查看哪些用户和进程正在使用文件、目录或套接字的命令。
-c 选项表示强制终止进程。
-k 选项表示同时终止用户和进程。
/mnt/nfs_client/ 是需要终止访问的挂载点的路径。
执行该命令后,会强制终止所有正在访问该挂载点的用户和进程,包括与NFS共享相关的进程。
 
2.NOTE this deabult has changed since nfs-utils version 1.0.x
# 解决
在/etc/exports文件中添加"no_subtree_check"参数,这将覆盖默认的subtree check规则
 

总结:到这里NFS就安装完了下一节我们解决 MYSQL   查看错误信息:提示PersistentVolumeClaims PVC没有绑定,不能启动的问题

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
27天前
|
网络协议 安全 Linux
NFS客户端请求
【10月更文挑战第14天】
26 2
|
1月前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
131 0
|
4月前
|
Linux 网络安全
NFS 服务器安装
NFS(Network File System)网络文件系统,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。当我们在 NFS 服务器设置好一个共享目录后,其他的有权访问 NFS 客户端就可以将这个共享目录挂载到文件系统自定义的挂载点,挂载好后客户端在本地能够看到服务端共享目录中的所有数据
84 1
|
3月前
|
存储 Kubernetes 调度
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
60 0
|
6月前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
138 0
|
6月前
|
Linux
Linux安装NFS挂载NFS卸载客户端服务端都有
Linux安装NFS挂载NFS卸载客户端服务端都有
153 0
|
6月前
|
Ubuntu 网络协议 Unix
【Linux】新唐NUC977挂载NFS实现网络文件传输
【Linux】新唐NUC977挂载NFS实现网络文件传输
|
6月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
419 0
|
6月前
|
存储 监控 网络协议
【Linux】文件服务NFS(Network File System)
【Linux】文件服务NFS(Network File System)
170 0
|
6月前
|
存储 Linux 网络安全
Linux系统安装NFS服务器
NFS是一种网络文件系统,英文全称Network File System,通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS,用户可以直接在本地NFS客户端读写NFS服务端上的文件,是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装NFS服务器,包括服务端和客户端安装两部分。
140 0