【云原生】持久化存储之NFS
创始人
2024-05-30 18:05:43
0

文章目录

      • 介绍
    • 一、NFS
      • 1. 部署nfs
        • 1.1 找一台服务器作为nfs服务端
        • 1.2 检查:
        • 1.3 创建挂载路径
        • 1.4 在nfs服务器启动nfs服务
      • 2. 所有node节点部署nfs服务
      • 3. 测试—部署nginx应用,使用nfs持久网络存储
    • 二、 PV和PVC
      • 2.1 PV
      • 2.2 PVC
      • 2.3 实现流程
      • 2.4 PV&PVC挂载步骤

介绍

NFS是一种基于TCP/IP传输的网络文件系统协议,最初由sun公司开发,通过NFS协议。客户机可以向访问本地目录一样访问远程NFS服务器中的共享资源。
NFS也是NAS存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输、安全性很差,所以一般只能在局域网中使用。

一、NFS

使用NFS持久化存储,必须要保证NFS服务器和所有Node节点上都部署了NFS服务,否则无法进行挂载。

1. 部署nfs

1.1 找一台服务器作为nfs服务端

  1. 在nfs服务器上安装nfs服务,并且设置挂载路径为/data/nfs
# 安装nfs
yum install -y nfs-utils
# 设置挂载路径
vim /etc/exports
/data/nfs *(rw,no_root_squash)

在这里插入图片描述

1.2 检查:

执行如下命令,不报错即可。如果报错说明配置文件/etc/exports有问题,会有提示,修改/etc/exports文件即可。

exportfs -r     # 不报错即可

在这里插入图片描述

1.3 创建挂载路径

挂载路径需要自己创建,这里的挂在路径为:/data/nfs

mkdir /data
cd/data
mkdir nfs

在这里插入图片描述

1.4 在nfs服务器启动nfs服务

systemctl start nfs
ps -ef | grep nfs

在这里插入图片描述

2. 所有node节点部署nfs服务

在k8s集群的所有node节点上安装nfs,以保证能够挂载成功

yum install -y nfs-utils

3. 测试—部署nginx应用,使用nfs持久网络存储

  1. 在pv目录下创建nfs-nginx.yaml文件,将下述代码复制进去:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-dep1
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootnfs:server: 192.168.2.6  ## nfs服务器IPpath: /data/nfs   ## nfs服务器挂在路径

运行yaml文件

kubevtl apply -f nfs-nginx.yaml

查看pod

kubectl get pods

在这里插入图片描述

  1. 在nfs服务器中,目录/data/nfs/下创建index.yaml文件,编辑文件内容

在这里插入图片描述

  1. 进入master中创建的pod,查看index.yaml文件存在,查看内容
kubectl exec -it [pod 名称] bashls /usr/share/nginx/html
cat /usr/share/nginx/html/index.html

在这里插入图片描述

  1. 暴露端口号
kubectl expose deployment nginx-dep1 --port=80 --target-port=80 --type=NodePort

查看端口号

kubectl get svc
  1. IP+端口号访问nginx网页,显示编辑的内容
    在这里插入图片描述
    看到以上内容说明挂载成功。

二、 PV和PVC

2.1 PV

持久化存储,对存储资源进行抽象,对外提供可以调用的地方(生产者)

2.2 PVC

用于调用,不需要关心内部实现细节(消费者)

2.3 实现流程

在这里插入图片描述
pv相当于物理主机,pvc相当于电脑中的C盘D盘等存储磁盘,必须依赖于主机存在,类似于pvc必须要绑定pv

2.4 PV&PVC挂载步骤

  1. 在master节点上创建pv目录,在pv目录下创建两个yaml文件,pv.yamlpvc.yaml,yaml文件内容如下,复制到对应yaml文件中:
    pv.yaml内容:
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 5GiaccessModes:- ReadWriteManynfs:path: /data/nfs     ## nfs服务器中挂在路径server: 192.168.2.6   ## nfs服务器IP

pvc.yaml内容:

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-dep1
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootpersistentVolumeClaim:claimName: my-pvc---apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteManyresources:requests:storage: 5Gi

运行两个yaml文件

kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml

查看

kubectl get pods
kubectl get pv,pvc

在这里插入图片描述
进入任意一个创建的pod中,由于副本数为3,所以我们随便进一个pod里,就会有和nfs服务器一样的index.html文件

kubectl exec -it nginx-dep1-58b7bf955f-7s8hp  bash

下图是master节点上,进入pod内的index.hml
在这里插入图片描述
下图是nfs服务器上挂载路径下的index.html
在这里插入图片描述

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...