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的有序启动和停止等。