当前位置: 首页 > news >正文

k8s存储之PV、PVC

         在k8s集群中,资源存储会散落到各个工作节点上,这样对用资源调用很不方便,那么k8s是如何实现存储资源共享的呢,本文浅尝辄止的探讨一下,k8s是通过pv、pvc实现的。

一、PV、PVC的概念

1、持久卷(PV)

        pv是PersistentVolume的缩写,pv是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,拥有独立于任何使用 PV 的 Pod 的生命周期。

2、持久卷声明(PVC)

         pvc是PersistentVolumeClaim的缩写, 是用户对存储的请求,PVC 申领会耗用 PV 资源。pvc的访问模式有 ReadWriteOnce、ReadOnlyMany、ReadWriteMany、ReadWriteOncePod。

二、PV、PVC的生命周期

1、制作PV

       PV 卷的制备有两种方式,静态制备或动态制备。静太制作集群管理员创建若干 PV 卷,这些卷对集群用户可用,可供用户消费。动态制备,当没有提前制作好的pv卷供pvc匹配,集群可以尝试为该 PVC 申领动态制备一个存储卷。

2、绑定

      用户创建一个带有特定存储容量和特定访问模式需求的 PersistentVolumeClaim 对象, 控制平面中的控制回路监测新的 PVC 对象,寻找与之匹配的 PV 卷 并将二者绑定到一起。。

3、使用

       Pod 将 PVC 申领当做存储卷来使用。集群会检视 PVC 申领,找到所绑定的卷, 并为 Pod 挂载该卷。对于支持多种访问模式的卷, 用户要在 Pod 中以卷的形式使用申领时指定期望的访问模式。

4、回收策略

       当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除, 从而允许该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群, 当其被从申领中释放时如何处理该数据卷。 目前,数据卷可以被 Retained(保留)、Recycled(回收)或 Deleted(删除)。

(1)保留(Retain)

        回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象被删除时,PersistentVolume 卷仍然存在,对应的数据卷被视为"已释放(released)"。 由于卷上仍然存在之前用户的数据,该卷还不能用于其他申领。如果需要继续使用这一块的资源,需要手动手动删除所关联的存储数据。

(2)删除(Delete)

       对于支持 Delete 回收策略的卷插件,删除动作会将 PersistentVolume 对象从 Kubernetes 中移除,同时也会从外部基础设施中移除所关联的存储资产。 

(3)回收(Recycle)

      目前已经废弃,推荐使用动态制作。

三、NFS服务搭建

1、文件存储技术分类

       分布式的文件存储技术实现常用的有三种:

(1)块存储ISCSI

        优点:速率块 不可取代 可以简单的方式实现数据的可用性
        缺点:不可共享 以及 文件系统的约束

(2)文件存储 NFS

       优点:实现了数据共享、构建资金较低
       缺点:速率较慢

(3)对象存储 MFS

      优点:实现了数据共享、读写效率高、有更高的磁盘IO 网络 IO,存储量级更高
      缺点:造价高 难度实现大

2、NFS部署

      本文使用nfs作为存储类型

(1)安装nfs-utils
yum install  -y nfs-utils  rpcbind
(2)配置挂载点
mkdir  -p  /home/data/nfs
vim  /etc/exports/home/data/nfs  *(insecure,rw,sync,no_root_squash)exports  -r
(3)启动nfs服务
systemctl start rpcbindsystemctl start nfs
systemctl  status nfs
(4)节点挂载

      假如主节点的主机名为server200,那么从节点的安装步骤按照前三步执行。然后在各个节点执行挂载命令即可:

mount –t nfs server205:/home/data/nfs  /home/data/nfs  
showmount -e  server205

  

四、PV、PVC创建与应用 

1、编写pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:name: k8s-dep-pvnamespace: wmy-dev
spec:capacity:storage: 256MiaccessModes:- ReadWriteManystorageClassName: nfsnfs:path: /home/data/nfs/testserver: server205
kubectl apply -f pv.yaml

2、编写pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: k8s-dep-pvcnamespace: wmy-dev
spec:resources:#申请资源requests:storage: 256MiaccessModes:- ReadWriteManystorageClassName: nfs
kubectl apply -f  pvc.yaml

3、应用PVC资源

     安装一个nginx服务,将其根目录挂载到/home/data/nfs/test

apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginxnamespace: wmy-dev
spec:replicas: 1selector:matchLabels:app: my-nginxtemplate:metadata:labels:app: my-nginxspec:containers:- name: k8s-depimage: ningximagePullPolicy: IfNotPresentports:- containerPort: 80name: tcpprotocol: TCPvolumeMounts:- name: v-nfs# 容器内需要挂载的目录文件mountPath: /usr/share/nginx/htmlvolumes:# 容器卷名称,按照规范命名即可,与挂载名称volumeMounts保持一致- name: v-nfspersistentVolumeClaim:claimName: k8s-dep-pvc
kubectl  apply  -f  nginx.yaml

http://www.lryc.cn/news/294310.html

相关文章:

  • go-基于逃逸分析来提升性能程序
  • [软件工具]文档页数统计工具软件pdf统计页数word统计页数ppt统计页数图文打印店快速报价工具
  • linux编译ffmpeg动态库
  • Unity3d Cinemachine篇(完)— TargetGroup
  • 事件驱动架构:使用Flask实现MinIO事件通知Webhooks
  • 力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机
  • R语言学习case10:ggplot基础画图Parallel Coordinate Plot 平行坐标图
  • Easy Excel动态表头的实现
  • kvm qemu 优化 windows 虚拟机速度
  • 银行数据仓库体系实践(18)--数据应用之信用风险建模
  • 每日一练 | 华为认证真题练习Day179
  • [ubuntu]add-apt-repository 添加以及移除
  • PySpark(二)RDD基础、RDD常见算子
  • 修改MFC图标
  • springboot158基于springboot的医院资源管理系统
  • 【算法】枚举——蓝桥杯、日期统计、特殊日期(位数之和)、2023、特殊日期(倍数)、跑步锻炼
  • 基于flask的个人博客项目从0到1
  • 基于OpenCV灰度图像转GCode的单向扫描实现
  • JAVA生成Word文档
  • python将.db数据库文件转成Excel文档
  • [opencvsharp]C#基于Fast算法实现角点检测
  • 群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务
  • ReactNative实现弧形拖动条
  • STM32F407移植OpenHarmony笔记9
  • telnet笔记
  • 【考研408】操作系统笔记
  • 从0开始搭建、上传npm包
  • 【Go】在 JSON 中解析 time.Duration
  • UE4 C++ UGameInstance实例化
  • 在工业制造方面,如何更好地实现数字化转型?