K8S学习指南(27)-k8s存储对象Persistent Volume Claim

文章目录

    • 前言
    • 什么是Persistent Volume Claim?
    • Persistent Volume Claim的基本结构
      • 1. Access Modes(访问模式)
      • 2. Storage Class(存储类)
      • 3. Resources(资源需求)
      • 4. Status(状态)
    • Persistent Volume Claim的使用示例
      • 步骤1:创建Persistent Volume
      • 步骤2:创建Persistent Volume Claim
      • 步骤3:创建Pod
      • 步骤4:验证
    • Persistent Volume Claim的优势
    • 总结

前言

Kubernetes(K8s)作为一个容器编排平台,提供了强大的存储管理功能,其中的Persistent Volume Claim(PVC)是一个关键的概念。PVC允许Pod声明对持久化存储的需求,使得存储资源的使用变得灵活而可控。本文将深入研究K8s中的Persistent Volume Claim,包括其基本结构、工作原理,并通过详细的示例演示如何使用和配置Persistent Volume Claim。

什么是Persistent Volume Claim?

在容器编排中,Pod的生命周期是短暂的,当Pod终止时,其中的数据通常也会被销毁。为了解决这个问题,Kubernetes引入了Persistent Volume(PV)和Persistent Volume Claim(PVC)的概念。

PVC是对PV的一种声明,它定义了Pod对存储资源的需求。Pod通过PVC来请求PV,而PV则提供了实际的存储资源。PVC的引入使得开发者无需关心底层存储的细节,能够更灵活地使用和管理存储。

Persistent Volume Claim的基本结构

PVC有一些基本的属性和状态,这些属性决定了PVC的行为和与PV的关联。

1. Access Modes(访问模式)

PVC支持与PV相同的访问模式,用于定义Pod如何与PV进行交互。主要有以下三种访问模式:

  • ReadWriteOnce(RWO): 读写模式,只能被单个Pod挂载为读写模式。
  • ReadOnlyMany(ROX): 只读模式,可以被多个Pod挂载为只读模式。
  • ReadWriteMany(RWX): 读写模式,可以被多个Pod挂载为读写模式。

2. Storage Class(存储类)

PVC可以选择性地指定Storage Class,用于指导Kubernetes动态地创建PV。Storage Class定义了PV的属性,包括存储类型、访问模式等。

3. Resources(资源需求)

PVC可以定义对存储资源的需求,包括容量和访问模式。这决定了K8s为Pod提供的PV的选择。

4. Status(状态)

PVC的状态包括当前的Phase,表示PVC的生命周期阶段,可能包括Pending、Bound、Lost等。

Persistent Volume Claim的使用示例

为了更好地理解Persistent Volume Claim的使用,以下是一个详细的示例,涉及PVC的创建、Pod的声明和与PV的关联。

步骤1:创建Persistent Volume

首先,我们创建一个PV,作为实际的存储资源。

apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: manualhostPath:path: "/mnt/data"

在这个例子中,我们创建了一个1Gi容量的PV,使用了ReadWriteOnce的访问模式,并指定了Retain的回收策略。PV的存储类为manual,表示这是一个手动创建的PV。PV的存储路径为/mnt/data

步骤2:创建Persistent Volume Claim

接下来,我们创建一个PVC,用于声明对存储资源的需求。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOncestorageClassName: manualresources:requests:storage: 1Gi

在这个例子中,我们创建了一个PVC,请求1Gi容量,并指定了ReadWriteOnce的访问模式和manual的存储类。

步骤3:创建Pod

最后,我们创建一个Pod,并将PVC挂载到Pod的路径中。

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: nginxvolumeMounts:- name: my-storagemountPath: "/usr/share/nginx/html"volumes:- name: my-storagepersistentVolumeClaim:claimName: my-pvc

这个Pod使用了Nginx镜像,并将PVC挂载到了/usr/share/nginx/html路径。这样,Pod就能够访问并写入PV中的持久化数据。

步骤4:验证

通过访问Pod中挂载的路径,我们可以验证数据是否能够持久化。

kubectl exec -it my-pod -- /bin/sh
# 在Pod中执行以下命令
echo "Hello, Persistent Volume Claim!" > /usr/share/nginx/html/index.html
exit

通过访问PV的存储路径,我们也可以验证数据是否持久化。

cat /mnt/data/index.html

Persistent Volume Claim的优势

  1. 抽象存储细节: PVC允许Pod声明对存储的需求,而无需关心底层存储的细节。这使得应用程序更加灵活和可移植。
  2. 动态存储: 通过Storage Class,PVC可以实现动态地创建PV,使得存储的管理更加灵活,无需手动创建和管理PV。
  3. 持久化存储: PVC可以确保应用程序的数据在Pod重启或迁移时得以保留,提供了持久化存储的解决方案。

总结

通过本文的详细介绍和示例演示,我们深入了解了Kubernetes中的Persistent Volume Claim。PVC作为K8s中存储管理的关键组件,提供了一种声明式的方式来使用和管理持久化存储资源。

了解Persistent Volume Claim的基本结构、属性和使用方法,有助于开发者更好地配置和管理Kubernetes集群中的存储资源。希望通过本文的介绍,读者能够更深入地理解Persistent Volume Claim的原理和用法,为构建可靠、可扩展的容器化应用提供基础。

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

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

相关文章

电脑里的ip地址在哪里查找

​互联网的普及使得电脑成为我们日常生活中不可或缺的工具。然而,对于很多人来说,电脑中的IP地址是一个相对陌生的概念。那么,电脑里的IP地址到底在哪里查找呢?本文将详细介绍如何快速查找和设置电脑IP地址,帮助您更好…

MongoDB的数据库引用

本文主要介绍MongoDB的数据库引用。 目录 MongoDB的数据库引用 MongoDB的数据库引用 MongoDB是一种面向文档的NoSQL数据库,它使用BSON(Binary JSON)格式存储和查询数据。在MongoDB中,数据库引用是一种特殊的数据类型,…

利用gradio快速搭建AI应用

引言 Gradio 是一个用于快速创建交互式界面的Python库,这些界面可以用于演示和测试机器学习模型。使用Gradio,开发者可以非常轻松地为他们的模型构建一个前端界面,而不需要任何Web开发经验。 与类似产品的对比 TensorBoard:主…

【Python从入门到进阶】44、Scrapy的基本介绍和安装

接上篇《43.验证码识别工具结合requests的使用》 上一篇我们学习了如何使用验证码识别工具进行登录验证的自动识别。本篇我们开启一个新的章节,来学习一下快速、高层次的屏幕抓取和web抓取框架Scrapy。 一、Scrapy框架的背景和特点 Scrapy框架是一个为了爬取网站数…

聊一聊后端语言的差异和特性差异

假如有一个需求要实现一个统计的需求,可能不同的人会有不同的实现方式,最为掌握一门编程语言和掌握多门编程语言,以及一年工作经验的编程人员和多年的编程人员的实现思路肯定是不一样的。 例子一:要实现A表中某个条件下&#xff…

JS参数归一化之对日期时间的格式化

/** 辅助函数:参数类型不确定时,找到它们的共同点作处理 */ function _formatNormalize(formatter){if(typeof formatter function){return formatter;}if(typeof formatter ! string){throw new TypeError(formatter must be string or function);}if(…

C++内存布局

温故而知新,本文浅聊和回顾下C内存布局的知识。 一、c内存布局 C的内存布局主要包括以下几个部分: 代码段:存储程序的机器代码。.数据段:存储全局变量和静态变量。数据段又分为初始化数据段(存储初始化的全局变量和…

python与机器学习2,激活函数

目录 1 什么是激活函数? activation function 1.1 阈值 1.2 激活函数a(x) ,包含偏置值θ 1.3 激活函数a(x) ,包含偏置值b 2 激活函数1: 单位阶跃函数 2.1 函数形式 2.2 函数图形 2.3 函数特点 2.4 代码实现这个 单位阶跃函数 3 激活…

Convolutional Neural Network(CNN)——卷积神经网络

1.NN的局限性 拓展性差 NN的计算量大性能差,不利于在不同规模的数据集上有效运行若输入维度发生变化,需要修改并重新训练网络容易过拟合 全连接导致参数量特别多,容易过拟合如果增加更多层,参数量会翻倍无法有效利用局部特征 输入…

结构型设计模式(三)享元模式 代理模式 桥接模式

享元模式 Flyweight 1、什么是享元模式 享元模式的核心思想是共享对象,即通过尽可能多地共享相似对象来减少内存占用或计算开销。这意味着相同或相似的对象在内存中只存在一个共享实例。 2、为什么使用享元模式 减少内存使用:通过共享相似对象&#…

汽车UDS诊断——SecureDataTransmission 加密数据传输(0x84)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍诊断和通讯管理功能单元下的84服务SecureDataTransmission,在常规诊断通信中,数据极易被第三方获取,所以在一些特殊的数据传输时,标准定义了加密数据传输的服务。 简而言之,就是在发送诊断数据时,发送方先把数…

leetCode算法—7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入…

fragstats:景观指数的时间序列分析框架

作者:CSDN _养乐多_ 本文将介绍景观指数的时间序列分析计算的软件使用方法和 python 代码,该框架可用于分析景观指数时间序列图像的趋势分析、突变分析、机器学习(分类/聚类/回归)、相关性分析、周期分析等方面。 文章目录 一、…

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工电场算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工电场算法4.实验参数设定5.算法结果6.…

C#连接数据库40错误

与 SQL Server 2012 建立连接时出现与网络相关的或特定于实例的错误。_server sql2012数据库建立连接时出现与网络相关的或特定于实例的错误-CSDN博客

04-Revision和流量管理

1 Revision 关于Revision 应用程序代码及相关容器配置某个版本的不可变快照KService上的spec.template的每次变动,都会自动生成一个新的Revision通常不需要手动创建及维护 Revision的使用场景 将流量切分至不同版本的应用程序间(Canary Deployment、Blu…

MySQL查询语句基础解析

一般查询: ## 直接查询 语法:select 字段 from 表名; 举例:select name, age from student; 解析:从 student 表中查询 name 与 age## 条件查询 语法:select 字段 from 表名 where 条件; 举例&…

静态路由及动态路由

文章目录 静态路由及动态路由一、静态路由基础1. 静态路由配置2. 负载分担3. 路由备份4. 缺省路由5. 静态路由实操 二、RIP 动态路由协议1. RIP 协议概述2. RIP 协议版本对比2.1 有类路由及无类路由 3. RIP 路由协议原理4. RIP 计时器5. 度量值6. 收敛7. 示例 静态路由及动态路…

Kafka基本原理及使用

目录 基本概念 单机版 环境准备 基本命令使用 集群版 消息模型 成员组成 1. Topic(主题): 2. Partition(分区): 3. Producer(生产者): 4. Consumer(…

使用TensorRT对Yolov5进行部署【基于Python】

如果还未配置TensorRT,请看这篇博文:Win11下TensorRT环境部署 这里使用TensorRT对Yolov5进行部署流程比较固定:先将pt模型转换为onnx,再将onnx模型转为engine,所以在执行export.py时要将onnx、engine给到include。 P…