k8s pv(PersistentVolume) 状态含义

一、PV 状态含义

在Kubernetes中,PersistentVolume(PV)有几种不同的状态,这些状态反映了PV的生命周期和可用性。以下是主要的PV状态及其含义:

  • Available: 表示该PV尚未被任何PersistentVolumeClaim (PVC)绑定,且可供使用。Kubernetes的存储类机制可能会自动将具有此状态的PV绑定到合适的PVC上,尤其是当PVC请求与PV的存储类相匹配时。

  • Bound: 当PV被成功绑定到一个PVC上时,其状态变为Bound。这意味着PV现在专属于那个PVC,直到PVC被删除或释放。绑定后,Pod可以通过PVC访问PV提供的存储。

  • Released: 当与PV绑定的PVC被删除,但PV的回收策略(Reclaim Policy)设置为Retain时,PV会进入Released状态。此时,PV虽然不再被任何PVC引用,但其上的数据会被保留,等待手动回收或重新绑定

  • Failed: 如果在PV的生命周期中发生了某些错误,如自动绑定失败等,PV可能会进入Failed状态。

  • Pending: 在某些情况下,如PV正等待与其他系统资源(如存储插件)的交互完成,或者等待满足特定条件(如标签选择器匹配),PV可能会处于Pending状态。这表明PV当前还不能被使用。

  • Terminating: 当PV的回收策略设置为Delete,并且开始执行删除流程时,PV会进入Terminating状态。这表示PV正在被Kubernetes系统清理,但尚未完全删除。

二、存储类 StorageClass(sc)

在Kubernetes中,存储类(StorageClass) 是一个核心概念,用于描述存储的类型、特性和动态供应策略。它是Kubernetes存储资源模型的一个重要组成部分,旨在提供存储资源的自动化和灵活管理,特别是在有状态应用的部署中。

2.1、存储类种类

通用型(General Purpose): 这是最基础的存储类型,适用于大部分工作负载,平衡了成本和性能。例如,EBS(Amazon Web Services的 Elastic Block Store)中的gp2就常被用作通用存储类。

高性能(High Performance): 专为需要快速读写速度和低延迟的应用设计,通常基于SSD等高性能介质。AWS EBS的io1或者GCP的pd-ssd就是高性能存储类的例子。

低成本(Low Cost): 侧重于成本效益,可能牺牲一定的性能,适合对I/O要求不高的应用场景。例如,使用旋转硬盘(HDD)的存储类,如AWS EBS的sc1或GCP的pd-standard

本地存储(Local Storage): 利用节点上的直接附加存储(如NVMe SSD或HDD),提供高性能和低延迟,但不提供跨节点的持久性。Kubernetes中有如local-storage这样的存储类示例。

只读(ReadOnly): 特殊用途的存储类,用于挂载只读数据,如镜像或者不可更改的参考数据。这可能涉及到特定的存储后端配置,以确保数据不可写。

加密存储(Encrypted): 提供加密功能的存储类,确保数据在静止状态下也是安全的。大多数云提供商支持配置加密的存储类。

2.2、 动态卷供应器

Kubernetes的动态卷供应器(Dynamic Volume Provisioner)是一个核心功能,它允许**自动创建和管理PersistentVolumes(PV)**以响应PersistentVolumeClaims(PVC)的需求。这简化了存储资源的管理和配置,特别是在有状态应用的部署场景下,无需手动创建和管理PV。动态供应器根据存储类(StorageClass)的定义,与云提供商或其他存储后端集成,按需供应存储资源。

动态卷供应器的工作原理

  • 用户请求: 用户通过创建PVC来请求存储资源,PVC中可以指定所需存储类的名称。

  • 存储类匹配: Kubernetes检查PVC中指定的存储类,寻找与之匹配的存储类配置。

  • 动态供应: 一旦找到匹配的存储类,且该类配置为动态供应,Kubernetes就会调用相应的动态供应器插件。

  • 资源创建: 动态供应器插件根据存储类的参数和限制,向底层存储系统(如云存储服务、本地磁盘阵列等)发出请求,创建相应的存储资源。

  • PV注册: 创建完成后,动态供应器会在Kubernetes集群中注册一个新的PV,并将其绑定到原始的PVC上,完成存储资源的供应过程。

常见动态卷供应器
AWS EBS: 为Amazon Web Services的Elastic Block Store(EBS)提供动态供应支持,可以按需创建GP2、IO1、ST1、SC1等不同类型的EBS卷。

Google Persistent Disk (GPD): 与Google Cloud Platform的Persistent Disk集成,支持多种磁盘类型,如SSD(pd-ssd)、标准硬盘(pd-standard)等。

Azure Disk: 针对Microsoft Azure的托管磁盘服务,允许动态创建Premium SSD、Standard SSD和Standard HDD等磁盘。

OpenStack Cinder: 为OpenStack环境中的Cinder块存储提供动态供应能力。

Local Volume Provisioner: 支持在Kubernetes节点上的本地磁盘上动态供应存储,适用于需要高性能或成本效益的场景,但不提供跨节点的高可用性。

Rook: Rook是一个开源存储编排平台,特别为Ceph分布式存储系统设计了动态供应器,允许在Kubernetes中无缝集成和管理Ceph存储。

Longhorn: 一个轻量级、云原生的分布式块存储解决方案,提供了Kubernetes的动态卷供应能力。

配置示例:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storage
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:archiveOnDelete: "false"

三、pv 回收策略

在Kubernetes(k8s)中,PersistentVolume (PV)回收策略定义了当与之关联的 PersistentVolumeClaim (PVC) 被删除时,PV 应该如何处理。回收策略是存储类(StorageClass)定义中的一个关键属性,影响着存储资源的生命周期管理。Kubernetes支持三种基本的PV回收策略:

1. Retain(保留)

  • 描述:当PVC被删除时,PV的回收策略为Retain,则PV不会被Kubernetes自动回收或删除。其状态会变为Released,意味着PV不再被任何PVC绑定,但仍然存在于集群中,并且保留其上的数据。
  • 使用场景:适合于那些希望手动管理PV生命周期和数据的场景,或者计划将来重新使用相同PV的情况。

2. Recycle(回收)【已废弃】

  • 描述:该策略曾经用于清理PV上的数据以便重用,但在Kubernetes v1.7之后已被废弃,不再推荐使用,因为它不安全且功能有限,无法处理非空目录或特定于卷插件的数据。
  • 注意:尽管仍可能在一些较旧的文档或遗留集群中见到,但现代实践中不应使用Recycle策略。

3. Delete(删除)

  • 描述:当PVC被删除,且PV的回收策略设置为Delete时,Kubernetes会自动删除对应的PV。如果PV是动态供应的(即通过动态卷供应器创建的),这通常意味着底层的存储资源也会被云提供商或存储系统清理。
  • 使用场景:适用于大多数动态供应的存储场景,特别是当不需要保留数据,或数据有其他备份方案时。这是最常用的回收策略,因为它简化了资源管理,避免了资源泄漏。

配置回收策略

回收策略通常在创建StorageClass时指定,并通过.spec.reclaimPolicy字段设置。例如,创建一个回收策略为Delete的StorageClass的YAML片段如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: fast
provisioner: kubernetes.io/aws-ebs
parameters:type: gp2
reclaimPolicy: Delete

四、直接附加存储(Direct Attached Storage, DAS)

Linux下的直接附加存储(Direct Attached Storage, DAS)是一种传统的存储架构,其中存储设备(如硬盘驱动器、固态硬盘)直接连接到单一的计算机或服务器上,而不是通过网络共享。这种存储方式在Linux系统中广泛应用于各种场景,从个人电脑到企业级服务器均有应用。DAS的特点和组件包括:

特点

  1. 性能:由于数据直接在服务器内部或通过高速接口(如SATA、SAS、PCIe NVMe)传输,DAS往往能提供较低的延迟和较高的吞吐量,适合I/O密集型应用。

  2. 成本:相较于网络存储解决方案(如NAS或SAN),DAS的初始成本可能更低,因为不需要复杂的网络存储硬件和软件。

  3. 简易性:配置和管理相对简单,通常只需要操作系统层面的设置,无需复杂的网络存储配置。

  4. 扩展性限制:DAS直接与单个主机相连,因此扩展存储容量或共享存储资源较为困难,限制了其在大规模或高可用性环境中的应用。

组件

  • 硬盘驱动器:传统机械硬盘(HDD)或固态硬盘(SSD)是最基本的存储媒介。
  • 控制器:如SATA、SAS控制器或主板集成的控制器,管理硬盘与系统的通信。
  • 接口:如SATA、SAS、USB、Thunderbolt、PCIe等,用于物理连接存储设备。
  • RAID控制器(可选):用于配置硬盘为RAID阵列,提高数据冗余或性能。
  • Linux内核存储子系统:管理存储设备的识别、配置和访问,如使用/dev/sd*/dev/nvme*等设备文件。

应用场景

  • 个人电脑和工作站:直接使用内置硬盘或通过USB、Thunderbolt外接硬盘。
  • 小型服务器:作为操作系统或应用程序的存储,特别是在不需要共享存储的场景。
  • 数据库服务器:对于一些对I/O性能要求极高的应用,直接附加高性能SSD可以提供最优性能。
  • 备份和归档:作为离线备份或长期数据存储的解决方案。

参考文档

1、https://blog.csdn.net/Tiger_lin1/article/details/132545249
2、https://www.cnblogs.com/rdchenxi/p/17113820.html
3、https://www.cnblogs.com/bitepeng/p/4142676.html
4、https://cloud.tencent.com/developer/techpedia/1594
4、https://developer.aliyun.com/article/1556480

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

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

相关文章

Kafka系列之:安装部署CMAK,CMAK管理大型Kafka集群参数调优

Kafka系列之:安装部署CMAK,CMAK管理大型Kafka集群参数调优 一、CMAK二、要求三、配置四、启动服务五、使用 Security 启动服务六、消费者/生产者滞后七、从 Kafka Manager 迁移到 CMAK八、CMAK管理大型Kafka集群参数调优九、后台运行CMAK十、输出日志一、CMAK CMAK(之前称为…

Linux---文件io

1.系统调用 由操作系统实现并提供给外部应用程序的编程接口。(Application Programming Interface,API)。是应用程序同系统之间数据交互的桥梁。 C标准函数和系统函数调用关系。一个helloworld如何打印到屏幕。 man手册中一共有九卷,其中一卷就有讲到系…

连锁店收银系统如何选择?

在新零售背景下,连锁店的收银系统扮演着至关重要的角色。随着科技的不断发展和消费者需求的不断变化,一款功能齐全的收银系统不仅可以提高便利店的运营效率,还可以提供更好的消费体验。以下是连锁店收银系统必备的功能。 1.收银系统能支持独…

【二十七】【QT开发应用】VS如何复制项目,QT无边窗窗口Pro版本,信号与信号槽的应用,背景图片自适应控件大小

VS复制项目 在使用VS的过程中,有的时候我们需要复制我们已经存在的项目. 我们可以先创建一个新的项目. 接着把需要复制的项目的文件复制粘贴到新的项目文件夹中. 不要忘记添加现有项目. CFrameLessWidgetBase.h #pragma once #include <QWidget> class CFrameLessWi…

书生大模型实战(从入门到进阶)L2-茴香豆:企业级知识库问答工具

目录 茴香豆介绍 茴香豆本地标准版搭建 环境搭建 配置服务器&#xff1a; 搭建茴香豆虚拟环境&#xff1a; 安装茴香豆 下载茴香豆 安装茴香豆所需依赖 下载模型文件 更改配置文件 知识库创建 测试知识助手 命令行运行 Gradio UI 界面测试 本文是对书生大模型L2-茴香…

SwiftUI简明概念(3):Path.addArc的clockwise方向问题

一、画个下半圆 SwiftUI中绘制下半圆的一个方法是使用Path.addArc&#xff0c;示例代码如下&#xff1a; var body: some View {Path { path inpath.addArc(center: CGPoint(x: 200, y: 370), radius: 50, startAngle: Angle(degrees: 0), endAngle: Angle(degrees: 180.0), …

自然语言处理实战项目:从基础到实战

自然语言处理实战项目&#xff1a;从基础到实战 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能的重要分支&#xff0c;致力于让计算机能够理解、生成和处理人类语言。NLP 在搜索引擎、智能客服、语音助手等场景中扮演着关键角色。本文将带…

不同领域的常见 OOD(Out-of-Distribution)数据集例子

以下是几个来自不同领域的常见 OOD&#xff08;Out-of-Distribution&#xff09;数据集例子&#xff0c;这些数据集常用于测试和研究模型在分布变化或分布外数据上的泛化能力&#xff1a; 1. 计算机视觉领域 CIFAR-10 vs. CIFAR-10-C / CIFAR-100-C: 描述&#xff1a;CIFAR-10…

MyBatis-Plus分页查询

在实际开发中&#xff0c;对于大量数据的查询&#xff0c;可以通过分页查询的方式来减少查询量和提高查询效率。在 MyBatis-Plus 中&#xff0c;分页查询可以通过使用 Page 对象和 IService 接口提供的分页方法来实现。MyBatis-Plus 的分页插件 PaginationInnerInterceptor 提供…

负载均衡--会话保持失败原因及解决方案(五)

会话保持失败可能由多种因素导致&#xff0c;以下是一些主要原因及其解释&#xff1a; 一、服务器及网络问题 服务器故障&#xff1a; 服务器出现故障或不稳定&#xff0c;导致无法正确处理会话信息。这可能是由于硬件故障、网络问题或软件错误等引起的。网络问题&#xff1a…

some 牛课题

D-Cidoai的字符集合_牛客练习赛128 (nowcoder.com) #include "bits/stdc.h" #define int long long using namespace std; int fa[100000000]; int sz[100000000]; int find(int n) {if(n!fa[n])fa[n]find(fa[n]);return fa[n]; } map<string,int>mp; signed …

Unicode 简介、发展历程与编码方式

原文链接&#xff1a;https://www.jianshu.com/p/cde52dfc4a9e 计算机作为人类制造出的最为强大的工具&#xff0c;将计算机变得更加强大和好用&#xff0c;是近百年来人类科技发展的主旋律和主要动力。 为了充分利用计算机的工具属性&#xff0c;让人更简单的理解计算机和更简…

基于单片机的水位检测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;DHT11温湿度采集温湿度&#xff0c;滑动变阻器连接ADC0832数模转换器模拟水位传感器检测水位&#xff0c;通过LCD1602显示信息&#xff0c;然后在程序里设置好是否…

C#核心(2)类和对象

前言 在上一节中&#xff0c;我们已经了解了面向对象开发的概念和原则&#xff0c;那今天&#xff0c;我们就来讲讲c#中的类。 c#中的类是我们面向对象开发使用最频繁的东西。 在未来我们要学习的unity开发中也是必不可少的。 所以希望屏幕前的你务必把这一块的知识学得扎实…

【文件增量备份系统】MySQL百万量级数据量分页查询性能优化

&#x1f3af; 导读&#xff1a;本文针对大数据量下的分页查询性能问题进行了深入探讨与优化&#xff0c;最初查询耗时长达12秒&#xff0c;通过避免全表计数及利用缓存保存总数的方式显著提升了浅分页查询速度。面对深分页时依然存在的延迟&#xff0c;采用先查询倒数第N条记录…

时间序列LSTM实现

这个代码参考了时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)_lstm预测模型-CSDN博客 结合我之前所学的lstm-seq2seq里所学习到的知识对其进行预测 import time import numpy as np import pandas as pd import torch import…

Meta Sapiens 人体AI模型

Meta 一直是开发图像和视频模型的领导者&#xff0c;现在他们又增加了一个新东西&#xff1a;Meta Sapiens。和Homo sapiens一样&#xff0c;这个模型也是关于人类的。它旨在执行与人类相关的任务&#xff0c;例如理解身体姿势、识别身体部位、预测深度&#xff0c;甚至确定皮肤…

算法课习题汇总(3)

循环日程表 设有N个选手进行循环比赛&#xff0c;其中N2M&#xff0c;要求每名选手要与其他N−1名选手都赛一次&#xff0c;每名选手每天比赛一次&#xff0c;循环赛共进行N−1天&#xff0c;要求每天没有选手轮空。 例如4个人进行比赛&#xff1a; 思路&#xff1a; 把表格…

Spring MVC 基本配置步骤 总结

1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…

通过WebTopo在ARMxy边缘计算网关上实现系统集成

随着工业互联网技术的发展&#xff0c;边缘计算成为了连接物理世界与数字世界的桥梁&#xff0c;其重要性日益凸显。边缘计算网关作为数据采集、处理与传输的核心设备&#xff0c;在智能制造、智慧城市等领域发挥着关键作用。 1. BL340系列概述 BL340系列是基于全志科技T507-…