【一起来学kubernetes】9、PersistentVolumeClaim和PersistentVolume和StorageClass的关系

名词解释
- Persistent :adj 持久的、持续的
- Volume : n 卷、容积
- Claim: v 认领、宣称、声明
- Storage: n 存储、保管

PersistentVolumeClaim(PVC)介绍
PersistentVolumeClaim(持久化卷声明,简称PVC)是Kubernetes中的一种资源对象,它代表了用户对存储资源的请求。以下是对PVC的详细介绍:
一、PVC的基本概念
PVC是用户对存储资源的一种声明或请求,它属于一个Namespace中的资源。通过PVC,用户可以请求特定大小、特定访问模式的存储资源,而无需关心底层存储的具体实现细节。PVC与Pod有相似之处,Pod消耗的是Node节点的计算资源(如CPU和内存),而PVC则消耗的是PersistentVolume(持久化卷,简称PV)的存储资源。
二、PVC的作用
- 存储资源请求:PVC允许用户指定所需的存储资源和访问模式,如读写权限、是否允许多节点挂载等。
- 与PV绑定:PVC会与PV进行绑定,PV是实际存储资源的抽象,包含了存储的具体参数和配置。一旦PVC与PV绑定,PVC就可以使用PV提供的存储资源。
- 生命周期管理:PVC有自己的生命周期,独立于任何使用它的容器组。即使容器组被删除或重新调度,PVC及其绑定的PV仍然存在,保证了数据的持久性。
三、PVC的创建与使用
- 定义PVC:用户需要创建一个PVC定义文件,指定所需的存储特性(如容量、访问模式等)和所属的StorageClass(存储类)。
- 提交PVC请求:使用kubectl命令将PVC定义文件提交到Kubernetes集群中,Kubernetes会根据PVC的请求为其匹配一个合适的PV。
- PVC与PV绑定:Kubernetes会为PVC找到一个满足其要求的PV,并将其与PVC绑定。绑定后,PVC就可以使用PV提供的存储资源了。
- 在Pod中使用PVC:用户可以在Pod的定义文件中通过volumeMounts和volumes字段将PVC挂载到Pod中的容器上,从而使用PVC提供的存储资源。
四、PVC的回收策略
PVC的回收策略与PV的回收策略相关。PV的回收策略有以下几种:
- Retain(保留):保留数据,需要由管理员手动清理。
- Recycle(回收):删除数据,即删除目录下的所有文件。但需要注意的是,目前只有NFS和HostPath支持此策略。
- Delete(删除):删除存储资源。但此策略仅支持部分云存储系统,如AWS EBS、GCE PD、Azure磁盘和Cinder卷等。
当PVC被删除时,其绑定的PV会根据PV的回收策略进行相应的处理。如果回收策略为Retain,则PV仍然存在,并需要管理员手动清理;如果回收策略为Recycle或Delete,则PV中的数据会被删除或存储资源会被释放。
PVC是Kubernetes中用于请求和管理存储资源的重要对象。通过PVC,用户可以方便地获取所需的存储资源,并保证数据的持久性和可靠性。

PersistentVolume(PV)介绍
PersistentVolume(持久卷,简称PV)是Kubernetes集群中的一块存储空间,用于提供持久化存储。以下是对PV的详细介绍:
一、PV的基本概念
PV是集群中的一种资源,与节点(Node)一样,它属于集群级别资源,不属于任何Namespace。PV是由集群管理员创建和管理的,它抽象了底层存储系统的细节,为用户提供了一个统一的存储接口。用户通过PersistentVolumeClaim(PVC)来申请和使用PV资源。
二、PV的作用
- 提供持久化存储:PV用于存储持久化数据,即使Pod被删除或重新调度,PV中的数据仍然存在。
- 抽象存储细节:PV屏蔽了底层存储系统的实现细节,为用户提供了一个简单的存储接口。用户无需关心存储系统的具体类型、配置和位置等信息。
- 动态供给:基于StorageClass,Kubernetes可以动态地为PVC创建PV,从而满足用户的存储需求。这大大简化了存储资源的管理和配置工作。
三、PV的创建与配置
- 定义PV:管理员需要创建一个PV定义文件,指定存储的类型、容量、访问模式、回收策略等参数。
- 提交PV请求:使用kubectl命令将PV定义文件提交到Kubernetes集群中。
- 配置访问模式和回收策略:PV的访问模式决定了Pod如何访问存储资源,包括ReadWriteOnce(单节点读写)、ReadOnlyMany(多节点只读)和ReadWriteMany(多节点读写)等。回收策略则决定了当PV被释放时如何处理存储资源,包括Retain(保留)、Recycle(回收,但当前版本已废弃)和Delete(删除)等。
四、PV的状态与生命周期
PV有以下几种状态:
- Available:表示PV是空闲的,尚未被PVC绑定。
- Bound:表示PV已经与某个PVC绑定,正在被使用。
- Released:表示与PV绑定的PVC已经被删除,但PV本身仍然存在,只是数据已经被“释放”或不再被该PVC使用。此时,PV可能需要根据回收策略进行处理。
- Failed:表示PV处于故障状态,可能是由于删除PVC时自动回收卷失败等原因导致的。
PV的生命周期包括创建、绑定、使用和释放等阶段。一旦PV被创建并配置好,它就可以被PVC申请和使用。当PVC被删除时,PV会根据回收策略进行相应的处理。
五、PV的类型与插件
PV的类型是通过插件机制实现的,目前Kubernetes支持多种存储插件,包括但不限于:
- NFS:网络文件系统,一种常用的共享存储解决方案。
- CephFS、RBD:Ceph存储系统的两种不同接口,提供了高性能和可扩展的存储服务。
- iSCSI、FC:基于块存储的接口,适用于需要高性能和低延迟的应用场景。
- AWS Elastic Block Store(EBS)、Google Compute Engine Persistent Disk(GCE PD)、Azure Disk:云提供商提供的块存储服务。
- GlusterFS、Flocker等:其他开源或商业的共享存储解决方案。
管理员可以根据实际需求选择合适的存储插件,并配置相应的PV来满足用户的存储需求。
PV是Kubernetes集群中提供持久化存储的重要资源。通过合理的配置和管理,PV可以满足用户的各种存储需求,并保证数据的持久性和可靠性。

StorageClass(SC)介绍
StorageClass是Kubernetes中用于定义持久卷(Persistent Volume,简称PV)的类型和行为的对象。以下是对StorageClass的详细介绍:
一、基本概念
- 定义:StorageClass是Kubernetes中用于抽象存储资源的定义,它允许管理员设置PVC(Persistent Volume Claim)的后端存储细节,简化用户操作,并自动处理PV的创建和绑定。
- 功能:通过StorageClass,管理员可以实现存储资源的动态供应和灵活管理,同时满足不同应用程序的存储需求。
二、主要组成
- 名称:StorageClass的唯一标识符,用于在Kubernetes中区分不同的StorageClass。
- Provisioner:定义了用于创建和管理存储卷的后端存储系统。Provisioner可以是自定义的后端存储提供者,也可以是Kubernetes内置支持的存储系统提供者,如AWSElasticBlockStore、AzureDisk、GCEPersistentDisk等。
- 参数配置:根据所选的Provisioner,管理员可以配置不同的参数来定义存储卷的属性和行为。这些参数通常包括存储类型、容量、性能等。
- 回收策略:定义了当存储卷不再需要时如何处理。常见的回收策略包括Delete(删除)和Retain(保留)。
- 挂载选项:指定在挂载持久卷时传递给底层存储的挂载选项。不是所有PV类型都支持挂载选项,如果PV不支持但StorageClass设置了该字段,则PV将会创建失败。
- 绑定模式:定义了持久卷的绑定模式。目前支持的绑定模式包括Immediate(立即绑定)和WaitForFirstConsumer(延迟绑定)。
三、工作原理
- 当用户创建一个PVC时,可以指定所需的StorageClass。
- Kubernetes会根据指定的StorageClass动态地创建一个符合要求的PV,并将其绑定到PVC上。
- 这样,用户就可以通过PVC来使用PV提供的持久化存储了。
四、优势与特点
- 动态资源供应:通过StorageClass,可以实现存储资源的动态供应,无需手动预先创建PV。
- 存储多样性管理:使用不同的StorageClass,可以为每个应用选择最适合的存储类型,满足多样化的存储需求。
- 简化管理:StorageClass抽象了存储资源的细节,简化了管理员的管理工作。
五、示例
以下是一个关于NFS的StorageClass示例:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-sc
provisioner: nfs-subdir-external-provisioner # NFS provisioner的名称
reclaimPolicy: Retain
在创建了这个StorageClass之后,用户可以创建一个PVC,并指定使用这个StorageClass:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: nfs-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "5Gi"
Kubernetes会根据StorageClass的定义,动态地创建一个5Gi大小的PV,并将其绑定到PVC上,从而实现持久化存储。
StorageClass是Kubernetes中用于定义和管理持久卷的重要对象。通过合理使用StorageClass,可以实现存储资源的动态供应、多样化管理和简化管理等工作。

PVC与SC的关系
StorageClass用于对PV进行分类,并可以根据PVC的请求动态创建PV。如果PVC指定了一个StorageClass,则Kubernetes会根据该StorageClass的定义为其动态创建一个满足要求的PV,并将其与PVC绑定。这样,用户就无需手动创建和配置PV了,大大简化了存储资源的管理。

PVC与PV的关系
在Kubernetes中,PersistentVolumeClaim(PVC)和PersistentVolume(PV)之间存在着紧密且特定的关系。这种关系主要体现在资源的请求与分配、绑定与解绑,以及生命周期的管理上。
请求与分配
-
PVC的请求:当用户需要为Pod提供持久化存储时,他们会创建一个PVC。PVC中详细描述了所需的存储资源,包括容量、访问模式(如ReadWriteOnce、ReadOnlyMany或ReadWriteMany)等。
-
PV的分配:集群管理员或动态存储提供者会根据PVC的请求,在集群中查找或创建一个符合条件的PV。这个PV将提供PVC所请求的存储资源。
绑定与解绑
-
绑定过程:一旦找到合适的PV,Kubernetes会将PVC与该PV进行绑定。这种绑定是双向的,意味着PVC将引用特定的PV,而PV也将被标记为已被某个PVC使用。
-
解绑条件:当PVC被删除或不再需要时,它与其绑定的PV之间的关联将被解除。然而,这并不意味着PV本身会被立即删除。PV的删除取决于其回收策略(如Retain、Delete等)。
生命周期管理
-
PVC的生命周期:PVC从创建到绑定、使用,再到最终的删除,都受到Kubernetes生命周期管理机制的监控。PVC的状态会随着其生命周期的进展而发生变化,如Pending(等待绑定)、Bound(已绑定)和Released(已释放,但PV仍保留)等。
-
PV的生命周期:与PVC类似,PV也有其自己的生命周期。从创建到被PVC绑定、提供存储资源,再到PVC解绑后可能的删除或保留,PV的状态也会随着其生命周期的进展而发生变化。
注意事项
- 唯一性与匹配性:每个PVC在集群中都是唯一的,并且只能与一个PV进行绑定。同样地,每个PV也只能被一个PVC使用(尽管某些PV类型可能支持多个PVC的只读访问)。
- 动态分配:在Kubernetes中,通过StorageClass和动态存储提供者,可以实现PV的动态分配。这意味着当PVC被创建时,如果没有现成的PV可用,动态存储提供者可以根据PVC的请求自动创建一个新的PV。
- 访问控制与安全性:PVC和PV之间的绑定关系还涉及到访问控制和安全性问题。例如,PVC可以指定所需的访问模式(如读写或只读),而PV则可以根据这些要求来配置存储资源的访问权限。
PVC与PV之间的关系是Kubernetes持久化存储管理的核心。通过精心设计和配置PVC和PV,用户可以确保Pod获得所需的持久化存储资源,同时实现存储资源的灵活管理和高效利用。

PV与SC关系
在Kubernetes中,PersistentVolume(PV)与StorageClass(SC)之间的关系主要体现在存储资源的定义、动态分配与管理上。以下是对PV与SC关系的详细分析:
一. 定义与功能
-
PV(PersistentVolume):
- 是Kubernetes集群中的一块持久存储资源。
- 可以是实际的存储设备,如磁盘或云存储卷,也可以是集群中的网络存储服务,如NFS、iSCSI等。
- 独立于Pod存在,可以在不同的Pod之间共享和重用。
- 包含了存储设备的详细信息,如类型、访问模式、容量大小等。
-
SC(StorageClass):
- 是用于定义动态存储的一种资源类型。
- 充当了存储供应商和应用之间的中间层,定义了存储的属性和行为。
- 允许管理员定义存储的类型(如快速SSD、普通磁盘等)、提供商(如AWS、Azure、GCP等)、复制策略、备份策略等。
二. 动态分配与管理
-
基于SC的PV动态创建:
- 当Pod需要持久化存储时,通常通过PersistentVolumeClaim(PVC)来请求。
- PVC可以引用SC来请求动态分配的PV。
- Kubernetes会根据PVC中指定的SC配置,自动创建一个符合要求的PV,并将其分配给PVC。
-
PV与SC的绑定:
- 在动态分配过程中,PV的创建是基于SC的配置进行的。
- 一旦PV被创建,它就会被标记为与特定的SC相关联。
- 这种绑定关系确保了PV能够满足PVC根据SC提出的存储需求。
三. 生命周期管理
-
PV的生命周期:
- PV的生命周期由SC(在一定程度上)和Kubernetes集群共同管理。
- 当PVC被创建并引用SC时,Kubernetes会根据SC的配置动态创建PV。
- 当PVC被删除时,与其绑定的PV也会根据回收策略被处理(如删除或保留)。
-
SC的持久性:
- SC作为集群级别的资源,其定义是持久的,不会因为PVC或PV的删除而消失。
- 这使得管理员可以定义一组通用的存储配置模板,供不同的PVC在需要时引用。
四. 灵活性与可扩展性
-
灵活性:
- 通过SC,管理员可以灵活地定义多种存储配置,以满足不同应用程序的存储需求。
- 用户可以根据PVC的特定需求选择合适的SC进行引用。
-
可扩展性:
- Kubernetes支持通过插件机制扩展存储功能。
- 新的存储类型和提供商可以通过实现相应的SC provisioner来集成到Kubernetes中。
PV与SC在Kubernetes中共同构成了持久化存储管理的核心组件。通过定义SC,管理员可以灵活地配置和管理存储资源;而PV则作为具体的存储实体,根据PVC的请求和SC的配置进行动态创建和分配。这种机制使得Kubernetes能够高效地满足Pod的持久化存储需求,同时提供了良好的扩展性和灵活性。
拓展
Nas介绍
NAS(Network Attached Storage)即网络附属存储,是一种专用数据存储服务器。以下是对NAS的详细介绍:
一、定义与功能
NAS被定义为一种特殊的专用数据存储服务器,它通过网络直接连接磁盘储存阵列,从而提供数据和文件服务。NAS将存储设备与服务器彻底分离,集中管理数据,以数据为中心。其内置有存储设备(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,可支持跨平台文件共享功能。
二、技术特点
- 连接性:NAS通常在一个LAN上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据。
- 协议支持:NAS能够支持多种协议,如NFS、CIFS、FTP、HTTP等,并且能支持各种操作系统。
- 简化管理:通过任何一台工作站,采用IE或Netscape浏览器就可以对NAS设备进行直观方便的管理。
- 专用操作系统:NAS不依赖通用的操作系统,而是采用一个面向用户设计的、专门用于数据存储的简化操作系统。
三、类型与扩展性
NAS可以根据不同的需求和规模进行分类,如电器型服务器、工作组NAS、中型NAS和大型NAS。这些分类有助于满足不同存储需求和环境。此外,NAS具有一定的扩展性,虽然增加额外的NAS设备容易,但将多个NAS设备的存储空间无缝合并可能相对复杂。
四、应用与优势
NAS在教育、医疗、制造业等多个领域都有广泛的应用。其优势包括:
- 数据共享:NAS适用于那些需要通过网络将文件数据传送到多台客户机上的用户,尤其是在数据必须长距离传送的环境中。
- 易于部署:NAS设备可以广泛分布在整个企业的网络环境中,易于部署和管理。
- 文件级整合:NAS提供可靠的文件级数据整合,因为文件锁定是由设备自身来处理的。
- 高效的文件共享:不同的主机与客户端通过文件共享协定存取NAS上的资料,实现文件共享功能。
五、局限性与注意事项
尽管NAS具有诸多优势,但也存在一些局限性:
- 网络带宽占用:NAS设备与客户机通过企业网进行连接,数据备份或存储过程中会占用网络的带宽,可能影响其他网络应用。
- 可扩展性限制:虽然增加另一台NAS设备容易,但无缝合并存储空间并不容易。
- 文件级访问:NAS访问需要经过文件系统格式转换,因此是以文件级来访问的,不适合Block级的应用,尤其是要求使用裸设备的数据库系统。
六、数据安全与隐私保护
为了保护NAS上的数据安全与隐私,需要采取一系列措施:
- 数据加密:采用文件级加密、共享文件夹加密或全盘加密等方式来保护数据。
- 网络安全设置:启用NAS自带的防火墙,限制不必要的端口访问,并更改默认端口。
- 权限管理:为每个用户设置不同的访问权限,如只读、读写等,并启用双重身份验证。
- 定期备份:按照“3-2-1”法则备份数据,确保数据在意外情况下不会丢失。
NAS作为一种高效、可靠的数据存储解决方案,在多个领域都有广泛的应用。然而,为了充分发挥其优势并保障数据安全与隐私,需要在使用过程中注意上述局限性和保护措施。
其它
更多推荐


所有评论(0)