【Kubernetes】持久卷声明 PVC

news2024/9/21 16:29:19

持久卷声明 PVC

  • 1.持久卷和持久卷声明的区别
  • 2.在 Pod 中使用持久卷声明
  • 3.storageClass 详解

持久卷声明Persistent Volume ClaimPVC),是用户对 Kubernetes 存储资源的一种请求。

通过使用 持久卷声明PVC),用户可以将实际的存储需求告诉给 Kubernetes,然后由 Kubernetes 在已有的 持久卷PV)中进行查找。当寻找到合适的 持久卷PV)时,Kubernetes 会将它提供给 持久卷声明PVC)使用。

因此,持久卷声明PVC)可以被看成资源消费者,它消费的是 持久卷PV)这种资源。

1.持久卷和持久卷声明的区别

持久卷持久卷声明 都是 Kubernetes 提供给用户使用的两种资源对象。通过使用 持久卷PV)和 持久卷声明PVC),可以封装集群数据持久化时的存储细节。

二者也有明显的区别,主要体现在以下两方面。

  • 二者的使用者不同。
    • Kubernetes 集群的管理员应当重点关注 持久卷PV)如何被创建、应该通过 持久卷PV)提供什么样的存储功能,却不需要关注它如何被使用。
    • Kubernetes 集群的用户,应重点关注 持久卷声明PVC)。用户只需要将存储的需求通过 持久卷声明PVC)挂载到 Pod 中即可,不需要关注需求如何被具体实现。
  • 二者所承担的任务不同。
    • 持久卷PV)可以被看成资源的生产者,而 持久卷声明PVC)可以被看成资源的消费者。持久卷PV)负责生成存储的资源,并提供给 持久卷声明PVC)使用。
    • 持久卷声明PVC)在消费 持久卷PV)时,可以向 持久卷PV)申请存储资源的大小及访问模式等。

在这里插入图片描述

2.在 Pod 中使用持久卷声明

在《持久卷 PV》中已经创建了一个 持久卷 pv-demo-1

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-demo-1
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  nfs:
    server: 172.30.1.2
    path: /nfs

下面在 Pod 中创建一个 持久卷声明 来使用它。

编辑 pvc-demo-1.yaml 文件,在其中输入以下内容。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-demo-1
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: slow

执行 kubectl apply -f 命令创建一个 PVC 资源。

kubectl apply -f pvc-demo-1.yaml

查看创建的 持久卷(PV)和 持久卷声明(PVC),如下图所示。

kubectl get pv,pvc

在这里插入图片描述

🚀可以看到,在创建了 持久卷声明 pvc-demo-1 后,持久卷 pv-demo-1 的状态会自动地从 Available 变成 Bound,并且自动匹配了 pvc-demo-1。这种自动匹配是通过存储类 storageClass 来实现的,因为在 pv-demo-1pvc-demo-1 的描述文件中都指定了 storageClassName: slow 字段。

编辑 pvc-pod-demo1.yaml 文件以创建 Pod 来使用持久卷声明对象,在文件中输入以下内容。

apiVersion: v1
kind: Pod
metadata:
  name: pvc-pod-demo1
spec:
  containers:
    - name: pvc-pod-container
      image: busybox
      imagePullPolicy: IfNotPresent
      args:
      - /bin/sh
      - -c
      - sleep 30000
      volumeMounts:
      - mountPath: "/mydata"
        name: mydata
  volumes:
    - name: mydata
      persistentVolumeClaim:
        claimName: pvc-demo-1

🚀 在 pvc-pod-demo1.yaml 描述文件中,通过 volumes.persistentVolumeClaim 字段指定了 持久卷声明(PVC)的对象为 pvc-demo-1,并将其挂载到了容器内部的 /mydata 目录下,而 持久卷声明 对象 pvc-demo-1 又自动匹配了 持久卷(PV)对象 pv-demo-1。因此,最终的效果是:把网络数据卷 NFS 挂载到了容器的 /mydata 目录下了。

执行 kubectl apply -f 命令。

kubectl apply -f pvc-pod-demo1.yaml

执行 kubectl exec -it 命令进入容器内。

kubectl exec -it pvc-pod-demo1 -c pvc-pod-container sh

查看容器内的 /mydata 目录。

ls /mydata/
more /mydata/index.html

在这里插入图片描述

🚀 /mydata 目录下的内容就是在《K8s 持久化存储方式》中创建在 NFS Server 上的 Nginx 的首页 index.html

3.storageClass 详解

持久卷(PV)对象可以属于某一个存储类 storageClass。

  • 如果属于特定存储类的 持久卷声明(PVC)对象请求存储资源,则它只能请求与其对应存储类所标识的 持久卷(PV)对象。
  • 如果 持久卷(PV)对象没有设置存储类,则它只能被没有指定存储类的 持久卷声明(PVC)对象请求。

下面是 Kubernetes 官方提供的一个创建存储类 storageClass 的示例。该存储类使用 NFS(网络文件系统)的制备器来提供存储资源。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: example-nfs
provisioner: example.com/external-nfs
parameters:
  server: "nfs-server.example.com"
  path: "/share"
  readOnly: "false"

从示例中可以看出,在存储类 storageClass 的定义中包含 provisionerparametersreclaimPolicy 字段。这些字段会在存储类 storageClass 需要动态分配 持久卷(PV)时被使用。

在这 3 个字段中,只有 provisioner(制备器)字段是必需的,它决定在创建 PV 资源时使用哪种类型的卷插件作为存储资源。例如,在该示例中使用 example.com/external-nfs 作为 PV 对象的制备器,该制备器通过 NFS 的方式提供存储资源。因此,在存储类 storageClass 的最后通过 parameters 参数指定了 NFS 的地址信息。

每一个被创建的 持久卷(PV)对象会有一个存储资源的回收策略(通过 reclaimPolicy 字段指定)。该字段的值可以是 DeleteRetain,默认值是 Delete

下面是 Kubernetes 官方提供的另一个存储类示例,该存储类使用 Glusterfs 插件来提供相应的存储资源。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/glusterfs
parameters :
  resturl: "http://127.0.0.1:8081"
  clusterid: "630372ccdc720a92c681fb928f27b53f"
  restauthenabled: "true"
  restuser: "admin"
  secretNamespace: "default"
  secretName: "heketi-secret"
  gidMin: "40000"
  gidMax: "50000"
  volumetype: "replicate:3"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolo训练策略--使用 Python 和 OpenCV 进行图像亮度增强与批量文件复制

简介 在计算机视觉和深度学习项目中,数据增强是一种常用的技术,通过对原始图像进行多种变换,可以增加数据集的多样性,从而提高模型的泛化能力。本文将介绍如何使用 Python 和 OpenCV 实现图像的亮度增强,并将增强后的…

驱动(RK3588S)第二课时:引导程序和内核

目录 一、引导程序(uboot)1、uboot介绍2、A 系列通用芯片启动流程3、uboot的配置与使用 二、内核(kernel)1、内核的介绍2、内核的配置、裁剪和编译 三、其他知识点 一、引导程序(uboot) 1、uboot介绍 ubo…

PDF转CAD必备工具:四款转换神器对比推荐

随着数字办公的普及,我们常常需要处理不同格式的文档。在工程和设计领域,PDF转CAD的转换工具更是必备之选。本文将为大家介绍四款高效、便捷的PDF转CAD工具: 一、福昕PDF在线转换器 直通车(粘贴到浏览器打开)&#x…

软件测试 - 性能测试 (概念)(并发数、吞吐量、响应时间、TPS、QPS、基准测试、并发测试、负载测试、压力测试、稳定性测试)

一、性能测试 目标:能够对个人编写的项目进行接口的性能测试。 一般是功能测试完成之后,最后做性能测试。性能测试是一个很大的范围,在学习过程中很难直观感受到性能。 以购物软件为例: 1)购物过程中⻚⾯突然⽆法打开…

PCB设计中” 铺铜的方式“导致电焊机设计失败

发现这个问题的背景 在看到网上视频设计一个小电池的点焊机很容易,在一些需要电力的小设计少不了点焊,就想尝试一下。当然其中遇到很多坑,后面会一起总结。这里遇到的一个小坑,但让人有点苦笑不得。 首先,点焊需要大…

【SQL】统一字符格式

目录 语法 需求 示例 分析 代码 语法 substring(column_name, start, length)用于从一个字符串中提取子字符串 column_name(或任何字符串表达式):这是要从中提取子字符串的列名或字符串表达式。start:这是子字符串开始的位置…

用Python实现时间序列模型实战——Day 3: 时间序列数据预处理

一、学习内容 1. 时间序列的差分运算 差分运算: 差分运算是时间序列平稳化的一种方法,通过计算相邻时间点的差值来消除序列中的趋势和季节性成分。 一阶差分用于去除线性趋势,公式为: 其中: 是时间 的原始值&…

【网络安全】服务基础第一阶段——第三节:Windows系统管理基础----服务器远程管理与安全权限

服务器远程管理是一种技术,服务器远程管理是指通过远程连接来监控、配置和维护服务器的过程,而无需直接在物理服务器前操作。它允许IT管理员在不同的地点对服务器进行配置、监控和维护,无需物理上接触到服务器本身。这种能力对于管理分布在多…

LLaVA-MoLE:解决多模态大型语言模型指令微调中的数据冲突问题

人工智能咨询培训老师叶梓 转载标明出处 多模态大模型(MLLMs)通过指令微调(instruction finetuning),能够执行各种任务,如理解图表、处理文档和回答基于图像的问题。但是,当从不同领域混合指令…

算法——K-means算法和算法改进

简介:个人学习分享,如有错误,欢迎批评指正。 一、什么是K-means算法? K-means算法是一种无监督的聚类算法,用于将一组数据点分为K个簇(cluster)。其核心目标是将数据点划分到K个不同的簇中&…

CAS单点登录安装文档

CAS单点登录安装文档 目录 1、 下载CAS 2、 下载xmlsectool 3、 安装xmlsectool 4、 打包CAS 5、 部署CAS 6、 访问CAS 1.下载CAS 在CAS官方Github下载:https://codeload.github.com/apereo/cas/zip/v5.3.0 2.下载xmlsectool 在MVNREPOSITORY下载xm…

JavaWeb JavaScript ⑨ 正则表达式

生命的价值在于你能够镇静而又激动的欣赏这过程的美丽与悲壮 —— 24.8.31 一、正则表达式简介 正则表达式是描述字符模式的对象。正则表达式用简单的API对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。 1.语法 var pattnew RegExp(pattern,modi…

【软考】IO软件

目录 1. 说明2. 读硬盘文件3. IO 系统的层次结构与每层的主要功能4. 例题4.1 例题1 1. 说明 1.设备管理软件的设计水平决定了设备管理的效率。2.从事I0 设备管理软件的结构,其基本思想是分层构造,也就是说把设备管理软件组织成为一系列的层次。3.低层与…

【机器学习】任务二:波士顿房价的数据与鸢尾花数据分析及可视化

目录 1.实验知识准备 1.1 NumPy 1.2 Matplotlib 库 1.3 scikit-learn 库: 1.4 TensorFlow 1.5 Keras 2.波士顿房价的数据分析及可视化 2.1波士顿房价的数据分析 2.1.1 步骤一:导入所需的模块和包 2.1.2 步骤二:从 Keras 库中加载波…

Linux驱动开发基础(DS18B20温度模块)

所学来自百问网 目录 1.DS18B20 简介 2.硬件设计 3.软件设计 3.1 存储器介绍 3.2 通信时序 3.2.1 初始化时序 3.2.2 写时序 3.2.3 读时序 3.3 常用命令 4. 示例代码 4.1 驱动代码 4.2 应用代码 4.3 Makefile 4.4 实验效果 1.DS18B20 简介 DS18B20 温度传感器具…

[线程]阻塞队列

文章目录 阻塞队列生产者消费者模型通过BlockingQueue理解阻塞队列自己实现阻塞队列 阻塞队列 我们之前学的队列, 其实是最基础的队列, 实际开发中, 针对队列还有很多种变种 普通队列优先级队列阻塞队列 先进先出, 线程安全, 并且带有阻塞功能 阻塞功能指: 如果队列为空, 尝试…

23种设计模式之模板模式

一.什么是模板模式 ‌‌模板模式是一种行为型设计模式,它定义了一个算法的骨架,而将一些步骤留给子类实现。‌这种模式允许子类在不改变算法结构的基础上,重新定义算法的某些步骤。模板模式属于行为型设计模式,主要用于处理那些需…

excel透视图、看板案例(超详细)

一、简介 Excel透视图(Pivot Table) 功能:透视图是一种强大的数据分析工具,用于汇总、分析和展示数据。它允许用户对数据进行重新排列和分类,从而更容易发现数据中的模式和趋势。用途:可以用来生成动态报表…

python07-单元测试框架unittest1-3

当测试用例数量增加,一个一个执行效率低下,需要将工程下的,case收集并按顺序执行将对应的代码放入run_tests.py run_tests.py:运行程序目的 收集所有的测试用例执行生成测试报告 运用测试用例的收集器或测试用例的加载器 7 Tes…

2.4梯度下降与量化策略优化

1. 梯度下降法的基本原理 欢迎来到“梯度下降”的世界!听上去有点像在爬山对吧?其实,这个算法的灵感确实来自爬山。想象你在一个山谷中迷路了,周围雾蒙蒙的,看不清楚路,只能摸着石头一步一步往下走。每走一…