Pod
Pod 是Kubernetes中创建和管理的最小单元,是一个或多个容器的组合,Pod中的容器共享存储和网络资源,以及运行容器的规范。
Volume
Volume是Pod内部的共享存储资源,生命周期和Pod相同,与容器无关,即使Pod上的容器停止或者重启,Volume也不会受到影响。但如果Pod终止,那么Volume的生命周期也会结束。
Persistent Volume(PV)
Volume中的数据无法持久保留,不能满足有状态服务的需求,因此需要Persistent Volume。PV是Kubernetes中的持久存储资源,是一种网络存储,它的生命周期和Pod无关。如果在Kubernetes中运行有状态服务,比如数据库MySQL,MongoDB或者中间件Redis,RabbitMQ等,那么就需要使用PV,这样即使Pod终止也不会丢失数据。
Persistent Volume Claim(PVC)
Persistent Volume Claim是PV的声明。在Kubernetes中,直接使用PV作为存储时,需要集群管理员提前创建好PV,使用上不灵活。而PVC可以将Pod和PV解耦,即Pod不直接使用PV,而是通过PVC来使用PV。这样,无需提前创建PV,只要通过StorageClass把存储资源定义好,Kubernetes就会根据使用需要,动态创建PV,这种方式称为动态供应。
StorageClass
StorageClass用于描述不同的存储类型。当通过PVC动态创建HBlock 的卷时,需要在StorageClass中配置创建HBlock卷的参数,如卷冗余模式、扇区大小、写策略等信息。
Container Storage Interface(CSI)
Container Storage Interface(CSI)是通用存储接口,旨在实现容器编排器和存储提供商之间的互操作。通过CSI,容器编排器能够使用任何存储提供商的存储服务,存储提供商也可以为任何容器编排器提供存储服务。
DaemonSet
DaemonSet确保集群中所有(或部分)节点运行一个Pod副本,当节点加入到集群时,Pod就被添加到节点上。当节点从集群中移除时,Pod就被垃圾回收。HBlock CSI插件使用的是DaemonSet类型的Pod控制器,会在每台节点上启动插件。
StatefulSet
StatefulSet是有状态服务的Pod控制器。StatefulSet用于管理一组Pod的部署和扩展,可以保证Pod的有序启动和停止等。
namespace
在Kubernete中,namespace(命名空间)是一种用于对集群资源进行组织和隔离的机制。它像一个逻辑分区,将 Kubernetes 集群划分为多个虚拟集群,每个namespace都有自己的资源对象,如 Pod、PVC等。这些资源对象在各自的 namespace 中是独立的,相同名称的资源可以存在于不同的namespace中而不会产生冲突。
VolumeSnapshot
在 Kubernetes中,卷快照(VolumeSnapshot)表示存储系统中卷的一个快照。
VolumeSnapshotContent
在 Kubernetes 中,是由管理员在集群中配置的卷的快照。它类似于 PersistentVolume 是集群中的一个资源。
VolumeSnapshotClass
在Kubernetes 中,VolumeSnapshotClass允许你指定属于VolumeSnapshot的不同属性。这些属性可能因同一存储卷上的不同快照而异。
克隆
克隆被定义为一个现有Kubernetes卷的复制品,它可以像任何标准卷一样被使用。唯一的区别在于配置时,不是创建一个“新的”空卷,而是由后端设备创建一个指定卷的精确复制品。