使用 Kubernetes 配置动态持久卷

介绍如何使用 Kubernetes PV 和 Kubernetes PVC 解决有状态容器化应用程序的持久存储需求,这个在使用Kubernetes过程中,是比较常见的需求。

Kubernetes 和容器中的存储处理方式与虚拟机(VM) 或其他类型的基础架构不同。

容器化应用程序通常通过并行运行多个容器实例来扩展。因此,一次运行的容器比虚拟机多得多,而且任何给定容器实例的生命周期通常要短得多——几分钟或几小时。相比之下,运行中的虚拟机可能会持续数周或数月。

本文介绍了如何使用 Kubernetes 持久卷 (PV) 和 Kubernetes 持久卷声明 (PVC) 来解决有状态容器化应用程序的持久存储需求。它还描述了如何静态或动态配置 PV。

什么是持久卷 (PV)?

有状态的应用程序需要数据在容器实例的生命周期之外持续存在。应用程序通常存储信息以供以后处理或记录更改或事务发生。PV 允许存储卷与容器实例分开。PV 是集群中分配的存储卷,它要么由管理员配置,要么使用存储类动态配置(稍后会详细介绍)。

Kubernetes 支持多种类型的卷,包括文件和块存储。各种存储供应商和云提供商都创建了容器存储接口 (CSI) 驱动程序,使 Kubernetes 能够利用其底层存储产品的功能。确定集群将使用哪种类型的存储是一项重要的管理任务,需要考虑静态/动态配置、服务质量(QoS)、可轻松横向扩展等。

PV 是类似于 Kubernetes 中其他资源的集群资源,例如节点、内存 (RAM) 等。与任何集群资源一样,它可以通过用 YAML 编写的配置文件来创建。

使用 Kubernetes 配置动态持久卷

请注意,该定义指定了有关 PV 的多个方面,例如其名称、容量、访问模式等。

思考一个简单的三节点 Kubernetes 集群如何运行有助于理解 PV 的预期。Kubernetes 容器在 Pod 中运行。在正常操作期间,运行在节点 A 上的 Pod X 可能会停止并在节点 C 或节点 B 上重新启动,因此与它关联的任何 PV(下图中的 PV-X)都需要可以从 Pod 可以运行的每个节点访问. 这通常意味着它需要在集群中的所有节点上都可以访问。而且,当然,您需要有创建 PV 的方法以及在 pod 中运行的应用程序容器使用它们的方法。


使用 Kubernetes 配置动态持久卷

静态 PV 供应和持久卷声明

使用静态配置,Kubernetes 管理员必须提前知道开发人员需要哪些持久卷,并通过创建YAML 文件在底层存储上创建这些卷,如上所示。创建 PV 后,它可以通过 Kubernetes API 访问并可供使用。

持久卷声明 (PVC) 是对 PV 的请求。声明描述了所需的存储,包括特定的名称、大小和访问模式。PVC 可以指定适当 PV 的部分或全部参数。如果 Kubernetes 找到与请求匹配的可用 PV,则 PVC 将绑定到该 PV。PVC 的 YAML 可能如下所示:

使用 Kubernetes 配置动态持久卷

建立 PVC 后,您可以在 Deployment 或 Pod 规范中使用该声明:

使用 Kubernetes 配置动态持久卷

总之,静态 PV 供应需要以下步骤:

  • Kubernetes 管理员创建一个 PV。
  • 开发人员创建 PVC 来请求存储并声明 PV。
  • 开发人员根据满足的声明配置 Pod 以使用 PV。
使用 Kubernetes 配置动态持久卷

动态配置

静态配置在某种程度上可以正常工作,但它要么需要管理员进行大量猜测(以便创建应用程序可能需要的 PV),要么需要开发人员和管理员之间的大量来回。随着 Kubernetes 环境的扩展,这可能会成为瓶颈。

动态配置解决了这个问题。管理员定义存储类,而不是 Kubernetes 管理员创建特定的 PV。每个 StorageClass 都有一个特定的存储后端,可以从中自动配置 PV 以满足应用程序的要求。例如,您可能有单独的存储类用于块存储和文件存储。类可以按您希望的那样细化。您可以拥有始终备份或从不备份的慢速、中速和快速块存储或类。

要创建 StorageClass,管理员必须指定一个供应商和适合该供应商的参数。例如,Kubernetes 有一个用于 AWS EBS(块)存储的内部配置器:kubernetes.io/aws-ebs。

Kubernetes 提供了各种内部配置器,在此处的 Kubernetes 文档中进行了描述。外部提供程序也可用或可以创建。

通过动态配置,开发人员可以使用 PVC 请求特定的存储类型并自动配置新的 PV。PVC 必须请求已由管理员在目标集群上创建和配置的 StorageClass,以便动态配置工作。

动态配置优势

使用动态配置有几个好处,尤其是随着您的运营增长:

  • 简化的工作流程:应用程序根据需要配置存储,而无需在用户和管理员之间不断来回切换。
  • 降低成本:消除了与预配置卷和管理卷相关的开销,并且管理员不必手动支持开发人员的存储需求。
  • 减少存储支出:动态配置自动分配和取消分配 PV 以响应 PVC,减少已分配但从未使用的存储浪费。
  • 优化的性能: PVC 根据 StorageClass 属性动态完成,因此生成的卷更符合需求。

持久卷和备份

Kubernetes 环境需要跟上集群和应用程序状态的备份,以防止发生灾难。如果您的备份旨在仅备份您知道的 PV,那么迟早您可能会错过一些。Kubernetes 备份应检查集群的状态以查找所有 PV。基于策略的解决方案有助于确保您以正确的时间间隔备份所有 PV,以提供所需的服务级别。

*多学习、多实践、多沉淀*

喜欢的朋友记得给个关注~

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章