k8s 持久化存储方案-NFS

NFS(Network File System)是一种网络文件系统协议,它允许不同计算机之间共享文件和目录。在 Kubernetes(k8s)中,NFS 是一种常见的持久化存储方案,用于将网络共享的存储卷挂载到容器中。

NFS 的基本介绍和常见应用场景:

  1. 基本原理:NFS 允许将存储资源(文件或目录)通过网络共享给其他计算机。NFS 服务器将存储资源公开为共享,并将其挂载到客户端计算机上。客户端可以像访问本地文件系统一样访问这些共享资源。

  2. 持久化存储方案:在 Kubernetes 中,NFS 可以作为持久化存储方案使用。它可以提供可靠的存储,并在 pod 被重新调度到不同的节点时保持数据的一致性。

  3. 分布式访问:NFS 允许多个客户端同时访问共享资源。这使得它非常适合那些需要多个容器或Pod 共享数据的场景,例如数据库系统或分布式文件共享。

  4. 跨平台兼容性:NFS 是一种跨平台的文件系统协议,支持在不同操作系统之间进行文件共享。这使得它成为在混合操作系统集群中实现持久化存储的理想选择。

  5. 灵活性:NFS 提供了对存储资源的灵活访问和管理。管理员可以根据需求创建和配置 NFS 服务器,设置共享权限以及实施访问控制策略。

  6. 备份和恢复:NFS 具备备份和恢复数据的能力。通过使用备份工具和策略,可以对 NFS 共享的数据进行定期备份,以防止数据丢失或损坏。

总结起来,NFS 是一种在 Kubernetes 中常用的持久化存储方案,可以提供可靠的存储和跨多个容器或 Pod 的文件共享。它具有跨平台兼容性、灵活性和备份恢复能力等,

一、搭建 nfs 服务

1.安装:以服务器63为例:在63上操作

复制代码
yum install nfs-utils -y

#在宿主机63创建 NFS 需要的共享目录

复制代码
mkdir /data/volumes -pv

2.#配置 nfs 共享服务器上的/data/volumes 目录

复制代码
 systemctl start nfs-server  #启动

在配置文件 vim /etc/exports 添加

复制代码
/data/volumes *(rw,no_root_squash)

#使 NFS 配置生效

复制代码
exportfs -arv  #使配置文件生效
service nfs-server restart    #重重启
systemctl enable nfs-server    #设置成开机自启动
systemctl status nfs-server     #查看 nfs 是否启动成功

看到 nfs 是 active,说明 nfs 正常启动了

3.在别的需要共享的服务器上也需要安装nfs 驱动

复制代码
yum install nfs-utils -y
systemctl start nfs-server
systemctl enable nfs-server

在 64服务器 上手动挂载试试:需要共享的都需要安装

root@xuegod64\]# mkdir /data2 \[root@xuegod64\]# mount -t nfs 192.168.1.63:/data/volumes /data2 > 192.168.1.63:/data/volumes 这是nfs服务器的ip和共享目录 > > /data2 这是本地的目录 #nfs 可以被正常挂载 > #手动卸载: > > \[root@xuegod64\]# umount /data2/ 二''#创建 Pod,挂载 NFS 共享出来的目录 nfs.yaml apiVersion: v1 kind: Pod metadata: name: test-nfs-volume spec: containers: - name: test-nfs image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 protocol: TCP volumeMounts: - name: nfs-volumes mountPath: /usr/share/nginx/html volumes: - name: nfs-volumes nfs: path: /data/volumes server: 192.168.40.63 注:path: /data/volumes #nfs 的共享目录 server:192.168.40.63 是 xuegod63 机器的 ip,这个是安装 nfs 服务的地址 #更新资源清单文件 \[root@xuegod63 \~\]# kubectl apply -f nfs.yaml #查看 pod 是否创建成功 \[root@xuegod63 volumes\]# kubectl get pods -o wide \| grep nfs \[root@xuegod63 \~\]# cd /data/volumes/ #登录到 nfs 服务器,在共享目录创建一个 index.html 并写入文件 #请求 pod,看结果 \[root@xuegod63 volumes\]# curl 10.244.187.108 通过上面可以看到,在共享目录创建的 index.html 已经被 pod 挂载了 #登录到 pod 验证下 \[root@xuegod63 volumes\]# kubectl exec -it test-nfs-volume -- /bin/bash root@test-nfs-volume:/# cd /usr/share/nginx/html/ root@test-nfs-volume:/usr/share/nginx/html# ls index.html #上面说明挂载 nfs 存储卷成功了,nfs 支持多个客户端挂载,可以创建多个 pod,挂载同一个 nfs 服务器共享出来的目录;但是 nfs 如果宕机了,数据也就丢失了,所以需要使用分布式存储,常见的分布式存储有 glusterfs 和 cephfs、

相关推荐
橙色云-智橙协同研发2 小时前
【PLM实施专家宝典】离散制造企业MBD与无纸化制造实施方案:从“图纸驱动”到“数据驱动”的革命
云原生·解决方案·数字化转型·plm·国产plm·专家经验·无纸化
victory04312 小时前
K8S重启之后无法启动故障排查 与 修复
云原生·容器·kubernetes
研究司马懿5 小时前
【ETCD】ETCD常用命令
网络·数据库·云原生·oracle·自动化·运维开发·etcd
java_logo5 小时前
SGLANG Docker容器化部署指南
linux·运维·docker·容器·eureka·1024程序员节
Qayrup5 小时前
各个系统的 docker安装
运维·docker·容器
代码or搬砖6 小时前
Docker 部署 Java 项目实践
java·docker·容器
蓝象_6 小时前
docker下载配置redis
redis·docker·容器
恋上钢琴的虫8 小时前
openEuler上安装高版本的docker
运维·docker·容器
半梦半醒*10 小时前
k8s——service详解
linux·运维·docker·容器·kubernetes
期待のcode10 小时前
Dockerfile镜像构建
java·docker·容器