k8s集群nfs网络持久卷存储实现

2023-11-12

1、nfs介绍和作用

        nfs卷能将 NFS (网络文件系统) 挂载到Pod 中。 不像 emptyDir 那样会在删除 Pod 的同时也会被删除,nfs卷的内容在删除 Pod 时会被保存,卷只是被卸载。

2、pv和pvc介绍

        pv持久卷是集群中的一块存储,可以由管理员事先制备,或者使用存储类来动态制备。
持久化存储,对存储资源进行抽象,对外提供可以调用的地方。

       pvc表达的是用户对存储的请求。概念上与Pod 类似。 Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源(CPU 和内存);同样 PVC 申领也可以请求特定的大小和访问模式 (例如,可以要求PV卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载)。用于调用,不需要关心内部实现细节。

3、配置nfs服务器

        新准备一台虚拟机作为nfs服务器端,安装nfs,设置挂载路径

        3、1 安装nfs

$ yum install -y nfs-utils

        3、2 设置挂载路径

$ vi /etc/exports

# 添加如下内容
/data/nfs *{rw,no_root_squash}

        3、3 创建挂载路径

        注意:exports文件中设置的挂载路径必须存在

$ mkdir /data/nfs

4、k8s集群中的node节点安装nfs

        在所有k8s集群中的node节点安装nfs

$ yum install -y nfs-utils 

5、启动nfs服务器端,开启nfs服务

$ systemctl start nfs

6、 验证node节点是否能够挂载到nfs服务器

$ showmount -e nfs服务器Ip

# 出现如下内容即代表可以挂载
Export list for 192.168.150.143:
/data/nfs *

7、创建pv

$ kubectl apply -f pv.yaml

# pv.yaml文件内容如下:
apiVersion: v1
kind: PersistentVolume          # 资源类型为pv
metadata:
  name: my-pv
spec:
  capacity:                     # 容量
    storage: 5Gi                # 5G
  accessModes:
    - ReadWriteMany
  nfs:
    path: /data/nfs             # nfs挂载数据的目录地址
    server: 192.168.150.143     # nfs服务器端IP地址

8、创建pvc

$ kubectl apply -f pvc.yaml

# pvc.yaml文件内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dep1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html      # 挂载路径
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        persistentVolumeClaim:
          claimName: my-pvc

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:              # 匹配模式
    - ReadWriteMany
  resources:                # 资源
    requests:               # 需求
      storage: 5Gi          # 5G容量

9、查看pvc是否绑定到pv

$ kubectl get pv,pvc
NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/my-pv   5Gi        RWX            Retain           Bound    default/my-pvc                           19h

NAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/my-pvc   Bound    my-pv    5Gi        RWX                           19h

可以看到pvc已经绑定到了pv上

10、查看nginx-dep1 Pod是否创建成功

$ kubectl get pods 
NAME                                            READY   STATUS    RESTARTS   AGE
nginx-dep1-58b7bf955f-7c7d8                     1/1     Running   0          20h
nginx-dep1-58b7bf955f-b5gpw                     1/1     Running   0          20h
nginx-dep1-58b7bf955f-rhfz8                     1/1     Running   0          20h

 可以看到nginx-dep1 的3个副本已经创建成功。

11、数据共享(nfs服务器上操作)

$ cd /data/nfs
$ vi index.html 
# 添加如下内容:
<h3>hello nfs</h3>

12、对外暴露应用

$ kubectl expose deployment ngin-dep1 --port=80 --target-port=80 --type=NodePort --name nginx

 查看service

$ kubectl get svc
NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP        13d
nginx            NodePort    10.103.95.41     <none>        80:31252/TCP   20h

 可以看到service已经成功创建成功。

13、浏览器端访问应用

通过IP:端口号在浏览器端访问nginx服务:

 可以看到在nfs服务器端挂载路径下添加index.html文件后,Pod容器内容也相应发生了变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s集群nfs网络持久卷存储实现 的相关文章

随机推荐

  • [GXYCTF2019]BabyUpload

    GXYCTF2019 BabyUpload 0x01漏洞类型 文件上传 经过测试 发现存在以下waf 不全 1 jpg不能过大 2 检查内容
  • Springboot2(44)集成canal

    源码地址 springboot2教程系列 canal高可用部署安装和配置参数详解 前言 canal是阿里巴巴的基于数据库增量日志解析 提供增量数据订阅 消费 目前主要支持了mysql 可以用于比如数据库数据变化的监听从而同步缓存 如Redi
  • 2018-2019-2 网络对抗技术 20165236 Exp2 后门原理与实践

    2018 2019 2 网络对抗技术 20165236 Exp2 后门原理与实践 一 实验内容 3 5分 1 使用netcat获取主机操作Shell cron启动 0 5分 2 使用socat获取主机操作Shell 任务计划启动 0 5分
  • 【论文精读】Deblur-NeRF

    今天读的是一篇CVPR2022的文章 这项工作由港科大 腾讯和港大共同完成 他们对模糊图片作为输入进行NeRF重建进行了研究 项目地址 点此前往 Abstract NeRF近年来在三维场景重建和新视角合成任务上表现出众 但是 野外环境中采集
  • 【GAMES101闫令琪图形学】作业0(配置开发环境)

    去games101往期作业汇总帖下载作业0的压缩包 作业0是让你配环境的 很简单 操作系统 VirtualBox虚拟机 Ubuntu20 04 比课程提供的虚拟硬盘版本更高 安装eigen和cmake sudo apt get instal
  • UncaughtExceptionHandler 捕获异常线程以及出现异常重启

    1 捕获线程的异常只需要修改Executor产生线程的方式 即为每一个线程添加一个实现了Thread UncaughtExceptionHandler接口的异常处理器来捕获线程发生的异常 出现异常之后在捕捉异常中在重新开启线程即可 例子如下
  • (第十四届蓝桥杯真题)砍树

    样例输入 6 2 1 2 2 3 4 3 2 5 6 5 3 6 4 5 样例输出 4 分析 由于题目中说明这个图是一棵树 所以任意两点之间的路径都是唯一的 那么我们要想使得u和v在不同的连通块中 我们只需要将其两点之间路径上的任意一条边删
  • MySQL • 源码分析 • SHUTDOWN过程

    摘要 ORACLE 中的SHUTDOWN MySQL SHUTDOWN LEVEL 暂时只有一种 源码中留了 LEVEL 的坑还没填 在此借用 Oracle 的 SHUTDOWN LEVEL 分析 Oracle SHUTDOWN LEVEL
  • WinSCP 与 Putty 中文显示乱码解决方法

    WinSCP 1 打开WinSCP 在登录会话界面中选定将要登录的会话 2 2 点击旁边的 编辑 按钮 3 3 在左侧树型菜单中找到 环境 项 并打开它 4 4 在右侧中一项为 文件名UTF 8编码 选择 开启 5 5 搞定 Putty 1
  • 【转载】设备\Device\Harddisk0\D 有一个不正确的区块

    http blog sina com cn s blog 5adb84f80100d3fs html 近一阵子 每次早晨一开机 便进不了系统 偶尔还蓝屏一下 代码为0x0000218 stop类的 开箱清洁一下 拔拔插插 过一会儿又可以进去
  • Tag:input type='file' 的文件长度问题

    http www cnblogs com rickel archive 2005 06 21 178385 html Q 發現一個現象 對於上傳文件時用到的標簽
  • leetcode(1) 两数之和

    题目描述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 你不能重复利用这个数组中同样的元素 示例 给定 nums 2 7
  • flutter imagepicker点击不了

    参考 already active 图像选取器已处于活动状态 null null 将Gradle版本降级为 classpath com android tools build gradle 3 5 4
  • C# 入门级教程网站

    http m biancheng net view 3026 html 记录一下 需要查询资料的时候就去检索一下
  • Matlab使用记录1-波形

    1 正弦波 清内存 关闭窗口 准备工作 clear close all clc signal 三要素 A 5 amplify f 2 Hz w 2 pi f rad s p 0 rad 采样 T 1 s 观测时间 fs 20 f Hz 采样
  • shell脚本中 set -ex

    刚刚学会了一个很实用的shell命令set ex 在这里分享一下 set e 先说说set e 这个参数的含义是 当命令发生错误的时候 停止脚本的执行 通常来说 我们会习惯于使用 来实现这样的功能 比如 echo 1 rm non exis
  • computed和watch的区别?(Vue面试题)

    有两种答法 大家自行参考 也可以结合起来 第一种 conputed 能完成的功能 watch 都可以完成 watch 能完成的功能 computed 不一定能完成 例如 watch 可以进行异步操作 两个重要的小原则 所有被 Vue 管理的
  • 用Java实现扑克牌游戏——简易炸金花

    一 思想呈现 首先 我们需要创建扑克牌 用字符串型定义扑克牌的花色 用整数型定义扑克牌上的数字 便于扑克牌的保存 再通过构造方法产生对应的对象 对外提供getter和setter方法便于使用 然后重写方法 使结果返回对应的花色与数字 接着来
  • 谷歌翻译网址

    个人总结的几个谷歌工具直连地址 http translate google cn hl zh CN http translate google cn http translate google cn hl cn
  • k8s集群nfs网络持久卷存储实现

    1 nfs介绍和作用 nfs卷能将 NFS 网络文件系统 挂载到Pod 中 不像 emptyDir 那样会在删除 Pod 的同时也会被删除 nfs卷的内容在删除 Pod 时会被保存 卷只是被卸载 2 pv和pvc介绍 pv持久卷是集群中的一