云容器引擎 CCE-存储基础知识:Volume(存储卷)

时间:2023-11-01 16:25:54

Volume(存储卷)

容器中的文件在磁盘上是临时存放的,这给容器中运行的较重要的应用程序带来如下两个问题:

  1. 当容器重建时,容器中的文件将会丢失。
  2. 当在一个Pod中同时运行多个容器时,容器间需要共享文件。

Kubernetes抽象出了Volume(存储卷)来解决以上两个问题。Kubernetes的Volume是Pod的一部分,Volume不是单独的对象,不能独立创建,只能在Pod中定义。Pod中的所有容器都可以使用Volume,但需要将Volume挂载到容器中的目录下。

实际中使用容器存储如下图所示,可将同一个Volume挂载到不同的容器中,实现不同容器间的存储共享。

存储卷的基本使用原则如下:

  • 一个Pod可以挂载多个Volume。虽然单Pod可以挂载多个Volume,但是并不建议给一个Pod挂载过多存储卷。
  • 一个Pod可以挂载多种类型的Volume。
  • 每个被Pod挂载的Volume卷,可以在不同的容器间共享。
  • Kubernetes环境推荐使用PVC和PV方式挂载Volume。

存储卷(Volume)的生命周期与挂载它的Pod相同,即Pod被删除的时候,Volume也一起被删除。但是Volume里面的文件可能在Volume消失后仍然存在,这取决于Volume的类型。

Kubernetes提供了非常丰富的Volume类型,您在CCE中可以使用的常用Volume类型如下:

存储卷(Volume)分类

描述

本地存储

适用于本地存储卷,例如HostPath、EmptyDir等。本地存储卷的特点是数据保存在集群的特定节点上,并且不能随着应用漂移,节点停机时数据即不再可用。

云存储

适用于云存储卷,例如SFS、OBS等。云存储卷的特点是数据不在集群的某个节点上,而是在远端的存储服务上,使用存储卷时需要将存储服务挂载到本地使用。

Secret和ConfigMap

Secret和ConfigMap是特殊的存储卷,其数据是集群的一些对象信息,该对象数据以卷的形式被挂载到节点上供应用使用。

PVC

一种存储卷定义方式,将存储卷抽象成一个独立于Pod的对象,这个对象定义(关联)的存储信息即存储卷对应的真正存储信息,供Kubernetes负载挂载使用。

support.huaweicloud.com/usermanual-cce/cce_10_0378.html