首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

存储模块开发

前面主要使用client-go客户端获取集群中的常见资源的相关信息,已经完成node、pod、deployment以及service模块的开发以及信息获取,今天我们来看看存储配置模块,主要涉及PV和PVC,是Kubernetes中实现存储的关键部分。

首先大致介绍下PV和PVC的相关基础概念:

官方文档对于PV和PVC的介绍:

PV就是持久卷(Persistent Volume),最主要的功能简单理解就是将pod中的数据进行持久化,存储在一个特定的地方。

详细介绍:

PV(Persistent Volume) 是 Kubernetes 中代表存储卷的资源对象,它是集群中由管理员配置的一段网络存储,用于持久化存储Pod的数据。

PV有以下主要特征:

1. PV是集群级别的资源,它与Node无关,Pod可以在Node之间迁移而不会影响对PV的访问。

2. PV代表一段真实的存储媒介(如本地存储、NFS、iSCSI等),Kubernetes 只是对这段存储进行管理和配置。

3. PV可以按访问模式(ReadWriteOnce、ReadOnlyMany、ReadWriteMany)进行配置,以适应不同应用的需求。

4. PV需要与PVC(Persistent Volume Claim) 进行绑定才可以被Pod使用。PVC 是应用级别的资源请求,是用户声明对PV的需求。

5. PV支持静态配置和动态配置两种模式。静态模式需要管理员手动配置PV,动态模式通过StorageClass配置来实现PV的自动创建与绑定。

6. PV还支持存储回收策略(Retain、Recycle、Delete)来决定与之绑定的PVC删除后对PV的操作。

Kubernetes通过PV/PVC对象对不同类型的存储(如NFS、GlusterFS、Ceph RBD等)进行了抽象,提供了一致的接口供Pod使用这些存储资源。应用只需要直接指定对PVC的需求,并和Pod绑定使用,无需关心底层具体的存储实现细节。

PV对象使Pod能够抽象地使用这些存储资源,而不必担心存储卷的生命周期、回收以及重新声明。

在Kubernetes集群中,可以使用以下几个命令获取PV的详细信息:

1. kubectl get pv: 列出集群中的所有PV,可以加上-o wide选项显示完整信息。

2. kubectl describe pv

:显示指定PV的详细信息,包括状态、容量、访问模式、存储类、回收策略等。

3. kubectl get pvc:列出所有PVC,可以找到与PV绑定的PVC。然后使用kubectl describe pvc

查看PVC详细信息,里面会显示与其绑定的PV。

PVC就是持久卷的申领(PersistentVolumeClaim,PVC),简单理解pod根据需求申请pv存储资源。

详细介绍:

PVC会将Pod请求的存储与PV(Persistent Volume)进行绑定,以提供持久化存储给Pod使用。

PVC具有以下主要特征:

1. PVC是Pod级别的资源对象。每个Pod可以请求一个或多个PVC。

2. PVC描述了对存储资源的访问模式(如读写权限)和容量需求,但不指定存储的具体实现,这些由管理员配置的PV资源来满足。

3. 只有当PVC与PV绑定后,Pod才可以使用PVC声明的存储资源。如果没有可用的PV与PVC绑定,PVC将保持未绑定状态。

4. PVC支持动态配置。管理员只需要配置StorageClass,不需要手动配置PVC。应用直接创建PVC,系统会自动寻找匹配的PV与之绑定,如果没有找到将根据StorageClass创建新的PV。

5. 绑定的PV可以是静态创建的也可以是动态创建的。动态PV是当PVC创建时由存储类自动创建的。

6. PVC删除时,其绑定的PV的回收策略决定了PV的归属。PV可以被回收和重新声明给其他PVC使用。

PVC为Pod提供了抽象的存储接口,完全屏蔽了底层的存储实现细节。应用只需要指定对存储资源的简单描述,如访问模式、容量大小等,就可以直接使用,不需要关心所使用的存储的类型(NFS、RBD、CephFS等)。

持久卷的类型:

再来看看,怎么获取集群中pv相关的信息:

以下是示例代码:

看看运行结果:

输出:

剩下的就是接口的开发,展示在前端,实现pv以及pvc的基础操作。

今天的分享就到这了,祝学习顺利!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230522A07DKD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券