K8S通过NFS实现共享存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S通过NFS实现共享存储相关的知识,希望对你有一定的参考价值。

一、NFS相关

1、简介

NFS(Network File System)即网络文件系统,Sun公司开发,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

好处就是一台磁盘共享,其他服务器都能共用改服务器的磁盘空间。

2、安装配置

2.1、环境概况

序号

服务器

是否共享

共享目录

角色

1

172.16.4.169

/data/k8s

服务端

2

172.16.4.121

挂载/data

客户端

3

172.16.4.203

挂载/data

客户端

2.2、安装步骤(服务端)

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
1、创建共享目录和权限设置
[root@k8s-master ~]# mkdir -p /data/k8s
[root@k8s-master ~]# chown -R 755 /data/k8s/
[root@k8s-master ~]# ll /data/
total 0
drwx--x--- 13 root root 167 Apr 21 17:08 docker
drwxr-xr-x 2 755 root 6 Apr 22 18:02 k8s

2、通过yum进行安装
[root@k8s-master ~]#yum -y install nfs-utils rpcbind

3、配置 nfs,nfs 的默认配置文件在 /etc/exports 文件下,在该文件中添加下面的配置信息:
[root@k8s-master ~]# vim /etc/exports
/data/k8s *(rw,sync,no_root_squash)

####备注相关配置说明
/data/k8s:是共享的数据目录
*:表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名
rw:读写的权限
sync:表示文件同时写入硬盘和内存
no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份

4、启动顺序,先启动rpc,在启动nfs
[root@k8s-master ~]# systemctl enable rpcbind
[root@k8s-master ~]# systemctl start rpcbind
[root@k8s-master ~]# systemctl status rpcbind
####在启动nfs
[root@k8s-master ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@k8s-master ~]# systemctl start nfs
[root@k8s-master ~]# systemctl status nfs

5、查看相关信息
##nfs相关信息
[root@k8s-master ~]# rpcinfo -p|grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
###查看挂载信息
[root@k8s-master ~]# cat /var/lib/nfs/etab
/data/k8s *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)

*

2.3、客户端操作

1、关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

2、安装nfs
yum -y install nfs-utils

3、创建自启动服务
systemctl enable rpcbind
systemctl start rpcbind

4、查看可以登录的nfs地址
[root@k8s-node1 ~]# showmount -e 172.16.4.169
Export list for 172.16.4.169:
/data/k8s *

5、挂载和查看
[root@k8s-node1 ~]# mkdir /data/k8s/ -p
[root@k8s-node1 ~]# mount -t nfs 172.16.4.169:/data/k8s /data/k8s
[root@k8s-node1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 5.4M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 29G 21G 58% /
/dev/sda1 1014M 209M 806M 21% /boot
/dev/mapper/centos-home 447G 33M 447G 1% /home
tmpfs 797M 0 797M 0% /run/user/0
172.16.4.169:/data/k8s 50G 49G 1.7G 97% /data/k8s

6、验证
[root@k8s-node1 ~]# echo 4444 >> /data/k8s/2.log
[root@k8s-node1 ~]# cat /data/k8s/2.log
444
##在服务端验证
[root@k8s-master ~]# cat /data/k8s/2.log
4444

以上是关于K8S通过NFS实现共享存储的主要内容,如果未能解决你的问题,请参考以下文章

(转)原理到实现 | K8S 存储之 NFS

k8s集群中的存储持久化概述

容器技术:用NFS,成共享存储。

k8s-v1.24.2创建nfs动态存储

K8S持久化存储之NFS

NFS存储服务