省流版:

定义

我们先询问一下 ChatGPT,看看 人工智能AI 怎么回答:

问:一句话解释 K8S 中 SC、PV、PVC

答:

存储类(StorageClass)定义了持久卷声明(PersistentVolumeClaim)所需的属性和行为,而持久卷(PersistentVolume)是实际的存储资源,持久卷声明(PersistentVolumeClaim)是 Pod 对持久卷的请求。

简而言之,存储类定义了持久卷的供应方式,持久卷是预先配置的存储资源,持久卷声明是 Pod 对持久卷的请求。存储类通过与 持久卷声明 绑定来创建符合需求的 持久卷,使得 Pod 可以使用持久卷。

从北漂租客眼中的看法:

  • 存储类 相当于我爱*家、链* 等这种租房中介商
  • 持久卷 相当于一套房子(三室两厅、两室三厅、豪华别墅等)
  • 持久卷声明 相当于租客的需求
  • Pod 相当于租客

租客(Pod)想租房子需要找到中介(SC)说出自己的需求(PVC)。中介(SC)根据租客需求(PVC)找到房子(PV)提供给租客使用。

注意:省流版结束了,下面是大篇幅的专业解释和演示(三个租客合租到三室的例子)。

正经版:

定义

关于K8S中SC、PV、PVC的理解_云原生

在 Kubernetes 中,存储类(StorageClass)、持久卷(PersistentVolume,PV)和持久卷声明(PersistentVolumeClaim,PVC)是用于管理持久化存储的关键组件。下面是它们之间的关系和作用:

  1. 存储类(StorageClass):存储类是用于定义持久卷的供应方式的抽象。它定义了存储卷的类型、访问模式、回收策略等信息。存储类允许管理员为不同的存储需求创建不同的策略,并且可以根据需要动态创建和删除持久卷。当创建 PVC 时,可以指定要使用的存储类,以便 Kubernetes 根据存储类的定义来创建相应的 PV。
  2. 持久卷(PersistentVolume,PV):持久卷是集群中的一块网络存储空间,它独立于 Pod 的生命周期。PV 是由管理员预先配置的,可以是物理存储设备、网络存储或云存储等。PV 具有容量、访问模式和回收策略等属性。PV 可以手动创建,也可以由存储类动态创建。当 PVC 请求一个符合条件的 PV 时,Kubernetes 会根据存储类的定义和可用的 PV 来选择并绑定一个 PV 给 PVC。
  3. 持久卷声明(PersistentVolumeClaim,PVC):持久卷声明是 Pod 对持久卷的请求。PVC 描述了 Pod 对存储的需求,包括容量、访问模式等。PVC 是通过与存储类绑定来创建符合需求的 PV 的一种方式。当创建 PVC 时,可以指定所需的存储类和其他属性,Kubernetes 会根据这些信息来选择并绑定一个合适的 PV 给 PVC。Pod 可以通过 PVC 来访问和使用持久卷。

演示

演示环境使用到了基于OKD开源项目发行的企业版(统信有雀)。 统信容器云管理平台,助您开启业务容器化之路!


NFS 动态存储驱动 NFS 外部驱动

通过使用 nfs 存储类演示

1、git clone 自动脚本

git clone https://github.com/LJTian/openshift.git

2、搭建 nfs 服务器

cd openshift/nfs 
sh nfs_install.sh /mnt/test/data 
showmount -e 10.10.15.117

关于K8S中SC、PV、PVC的理解_chatgpt_02

3、使用有雀平台创建 NFS 动态分配服务器

cd ../nfs_CSI/
sh install_nfs.sh 10.10.15.117 /mnt/test/data

关于K8S中SC、PV、PVC的理解_openshfit_03

4、创建测试 pod1、pod2、pod3

oc apply -f nfs_temp/test-pod.yaml

关于K8S中SC、PV、PVC的理解_openshfit_04

通过 UCCPS web 拓扑图查看pod

关于K8S中SC、PV、PVC的理解_k8s_05

5、登录 nfs 服务查看演示结果

cd /mnt/test/data && ls test-sc-pv-pvc-test-claim-pvc-*

关于K8S中SC、PV、PVC的理解_k8s_06

演示完成!!!

  • 给没有看懂的人补个图理解一下,也和省流版进行一下呼应。

关于K8S中SC、PV、PVC的理解_openshfit_07

专业名词解析

  • K8S: Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。
  • OC: oc 是 OKD 的命令行工具,用于与 OKD 集群进行交互和管理。
  • OKD: (Origin Community Distribution of Kubernetes)是一个开源的Kubernetes发行版,它是Red Hat OpenShift的上游项目。OKD提供了一个容器化应用程序平台,用于构建、部署和管理容器化应用程序。与标准的Kubernetes发行版相比,OKD提供了一些额外的功能和工具,以帮助开发人员更轻松地构建和管理容器化应用程序。
  • UCCPS: 统信容器云管理平台(Uniontech Container Cloud Platform Solution-UCCPS)简称:【统信有雀】

如有不正确的内容欢迎大佬们指出,我必将改正~