存储类(StorageClass)定义了持久卷声明(PersistentVolumeClaim)所需的属性和行为,而持久卷(PersistentVolume)是实际的存储资源,持久卷声明(PersistentVolumeClaim)是 Pod 对持久卷的请求。
- 存储类(StorageClass):存储类是用于定义持久卷的供应方式的抽象。它定义了存储卷的类型、访问模式、回收策略等信息。存储类允许管理员为不同的存储需求创建不同的策略,并且可以根据需要动态创建和删除持久卷。当创建 PVC 时,可以指定要使用的存储类,以便 Kubernetes 根据存储类的定义来创建相应的 PV。
- 持久卷(PersistentVolume,PV):持久卷是集群中的一块网络存储空间,它独立于 Pod 的生命周期。PV 是由管理员预先配置的,可以是物理存储设备、网络存储或云存储等。PV 具有容量、访问模式和回收策略等属性。PV 可以手动创建,也可以由存储类动态创建。当 PVC 请求一个符合条件的 PV 时,Kubernetes 会根据存储类的定义和可用的 PV 来选择并绑定一个 PV 给 PVC。
- 持久卷声明(PersistentVolumeClaim,PVC):持久卷声明是 Pod 对持久卷的请求。PVC 描述了 Pod 对存储的需求,包括容量、访问模式等。PVC 是通过与存储类绑定来创建符合需求的 PV 的一种方式。当创建 PVC 时,可以指定所需的存储类和其他属性,Kubernetes 会根据这些信息来选择并绑定一个合适的 PV 给 PVC。Pod 可以通过 PVC 来访问和使用持久卷。
简而言之,存储类定义了持久卷的供应方式,持久卷是预先配置的存储资源,持久卷声明是 Pod 对持久卷的请求。存储类通过与 持久卷声明 绑定来创建符合需求的 持久卷,使得 Pod 可以使用持久卷。
从租客眼中的看法:
- 存储类 相当于德祐、链家等这种租房中介商
- 持久卷 相当于一套房子(三室两厅、两室三厅、豪华别墅等)
- 持久卷声明 相当于租客的需求
- Pod 相当于租客
租客(Pod)想租房子需要找到中介(SC)说出自己的需求(PVC)。中介(SC)根据租客需求(PVC)找到房子(PV)提供给租客使用。
Volume
Volume(存储卷)是Pod中能够被多个容器访问的共享目录。Kubernetes的Volume概念、用途和目的与Docker的Volume比较类似,但两者不能等价。首先,Kubernetes中的Volume被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下;其次,Kubernetes中的Volume与Pod的生命周期相同,但与容器的生命周期不相关,当容器终止或者重启时,Volume中的数据也不会丢失。最后,Kubernetes支持多种类型的Volume,例如GlusterFS、Ceph等先进的分布式文件系统。
在Kubernetes(K8s)中,Persistent Volume Claim(PVC)和Service(SVC)是两种不同的资源对象,它们各自服务于不同的目的。
-
Persistent Volume Claim(PVC):PVC是Kubernetes中的一种资源对象,它代表了对存储资源的需求。PVC允许用户声明他们需要的存储空间大小、访问模式(如读写、只读等)以及存储类。PVC的作用类似于向存储管理员请求存储资源,当PVC被成功创建后,它会在Kubernetes集群内部被分配相应的存储资源。PVC的设计目的是为了抽象存储细节,使得Pod可以独立于具体的存储实现进行部署和管理,从而提高了系统的灵活性和可移植性1。
-
Service(SVC):SVC是Kubernetes中的一种网络资源对象,它为Pod提供了一种抽象层,使得Pod可以通过网络名称进行访问,而不是直接通过IP地址和端口号。SVC可以将多个Pod的流量路由到一个或多个端口上,实现了服务的负载均衡和高可用性。SVC还支持不同的服务发现机制,如ClusterIP、NodePort和LoadBalancer,使得服务可以在集群内部和外部进行访问2。
简而言之,PVC和SVC在Kubernetes中扮演着不同的角色:PVC负责管理和分配存储资源,而SVC则负责网络服务和负载均衡。这两者共同工作,使得Kubernetes能够有效地管理和扩展应用程序的服务和存储需求。