Kubernetes中的持久化存储

相关概念

Kubernetes中的SC、PV和PVC是三个重要的概念,它们分别代表存储类别、持久化卷和持久化卷声明。它们之间的关系如下:

  1. 存储类别(StorageClass,简称SC):存储类别是一种抽象的概念,用于定义持久化存储的类型。它定义了一组存储特征,如访问模式、可用性、复制策略、性能等,并将这些特征映射到一个或多个底层存储系统。存储类别是一个集群级别的资源,可以供多个命名空间使用。
  2. 持久化卷(PersistentVolume,简称PV):持久化卷是Kubernetes中的一种资源对象,用于表示持久化存储的一块独立的存储空间。它是由存储管理员(或自动化系统)在集群中预分配并配置的,可以由多个Pod共享使用。持久化卷有一些特性,如大小、访问模式、回收策略等。
  3. 持久化卷声明(PersistentVolumeClaim,简称PVC):持久化卷声明是Pod对存储的需求描述,它申请一定的存储资源,并且指定一些属性,如访问模式、大小、存储类别等。PVC与Pod是一一对应的,一个Pod可能会声明多个PVC。当PVC被创建时,Kubernetes会尝试为其找到一个符合条件的PV,并将其绑定在一起,这个过程称为PVC绑定。

在Kubernetes中,Pod通过声明PVC来申请持久化存储资源,PVC通过SC来选择底层存储系统,而PV是底层存储系统中的一块资源,由管理员预先创建和配置。因此,Kubernetes中的存储系统可以被描述为:Pod → PVC → PV → 存储系统。其中,存储类别是可选的,如果没有指定存储类别,PVC将会使用默认的存储类别。

SC

WaitForFirstConsumer机制

StorageClass中的WaitForFirstConsumer模式是用于在第一个Pod使用PVC之前,延迟创建底层PV的一种策略。这种策略的设计目的是节省资源和减少不必要的PV的创建,因为在某些情况下,可能会出现PVC被创建,但实际上没有Pod使用它的情况,此时预先创建PV可能会浪费存储资源。

WaitForFirstConsumer模式允许在PVC被绑定到PV之前,等待第一个Pod使用这个PVC。在等待期间,底层PV不会被创建,从而节省了存储资源。只有当第一个Pod使用这个PVC时,PV才会被创建并绑定到PVC,后续Pod可以共享这个PV。如果等待期间没有Pod使用这个PVC,那么PVC将一直处于绑定等待状态,直到删除为止。

使用WaitForFirstConsumer模式需要注意以下几点:

  1. 如果Pod没有正确挂载PVC,则PVC将一直处于绑定等待状态。
  2. 如果等待时间过长,可能会影响Pod的启动速度。
  3. 等待时间应该设置得合理,以避免PV和PVC资源的浪费。
  4. 通常用本地存储作为持久存储的时候,推荐使用WaitForFirstConsumer选项,避免存储资源的浪费。

PV

PVC

你可能感兴趣的:(Kubernetes中的持久化存储)