存储
特性介绍
Kubernetes中的资源管理存储(Storage Management)提供了一种动态、高效且可扩展的方式来管理集群中的持久化存储资源。它允许用户在Kubernetes集群中请求、分配和管理存储资源,确保应用程序能够在容器生命周期内保持数据的持久性。Kubernetes的存储管理通常由PersistentVolume(以下简称“PV”)、PersistentVolumeClaim(以下简称“PVC”)和StorageClass(以下简称“SC”)三个核心概念构成。
应用场景
-
持久化存储:许多应用需要持久化的数据存储,如数据库、日志存储、缓存(Redis)、文件存储等。存储资源必须跨容器生命周期进行持久化,避免容器重启后数据丢失。
-
stateful应用:与无状态应用(stateless applications)相比,stateful应用需要存储其状态数据(如虚拟机管理、数据中心存储等)。在这些场景中,Kubernetes中的存储管理提供了动态扩展、持久存储等功能。
-
动态存储供应:对于需要在运行时动态申请存储资源的场景,Kubernetes的SC支持动态供应存储资源,简化了存储资源管理。
能力范围
-
灵活的存储配置:支持不同类型的存储后端(如云存储、网络存储、本地存储),并允许根据应用需求调整存储大小、性能等。
-
存储资源隔离与调度:通过PV与PVC之间的绑定,确保存储资源的隔离性和合理分配。
亮点特征
-
存储资源自动扩展:Kubernetes支持自动扩展存储资源,确保数据的扩展性和持久性。
-
存储的生命周期管理:PV和PVC为存储资源提供了生命周期管理机制,包括创建、修改、删除等操作。
-
存储资源的访问控制:Kubernetes支持多种访问模式(如ReadWriteOnce、ReadOnlyMany、ReadWriteMany),确保数据访问的安全性与灵活性。
基本概念
PersistentVolume (PV) PV是集群内的持久化存储资源,表示一个具体的存储资源,来源于网络存储(如NFS、Ceph、iSCSI等)或本地磁盘。管理员创建并配置这些PV,指定其存储类型、容量、访问模式等。
PersistentVolumeClaim (PVC) PVC是用户对存储资源的请求,用户声明所需的存储大小、访问模式等。PVC一旦创建,Kubernetes会根据其要求寻找适合的PV进行绑定。
StorageClass (SC) StorageClass定义了存储资源的属性,如存储类型、性能级别等。它还支持存储资源的动态供应(Provisioning)。当PVC指定了某个StorageClass时,Kubernetes会根据该类的定义选择合适的存储资源供应插件来动态提供PV。
实现原理
用户通过创建PVC请求存储资源,Kubernetes通过调度器选择一个合适的PV(如果没有合适的PV,它会根据SC动态创建)。当PV与PVC绑定后,存储资源就可以供Pod使用。
与相关特性的关系
-
Pod与存储:存储资源通过PVC挂载到Pod中。Pod需要声明PVC来访问持久化存储资源。Kubernetes提供了不同类型的卷(Volume)来挂载PVC,以满足不同存储需求。
-
Scheduler与存储:Kubernetes的调度器需要了解存储资源的可用性,并确保Pod能够在具备合适存储资源的节点上运行。存储资源会影响Pod的调度,特别是当存储资源需要特定硬件支持时。
-
RBAC(角色访问控制):存储资源的创建、修改和删除受到权限控制的影响,特别是在大规模集群中。RBAC机制可以限制对PV、PVC和StorageClass的访问权限,确保安全性。
-
StatefulSet:对于有状态的应用程序,Kubernetes的StatefulSet和存储资源紧密集成。StatefulSet可以通过PVC为每个Pod提供独立的持久化存储,适用于数据库、分布式缓存等场景。
-
动态存储管理与自动扩容:Kubernetes的动态存储管理功能支持自动创建、删除和扩展存储资源。结合Kubernetes的Horizontal Pod Autoscaler(HPA)和Cluster Autoscaler(CA),可以实现基于负载自动扩展的存储资源供应。
安装
存储特性随平台一起安装。
使用PV
PV是Kubernetes中的一种资源对象,代表集群中的物理存储资源,能够绑定PVC。其背景信息与存储后端相关联,如NFS、Ceph、云存储等。在openFuyao平台左侧导航栏“资源管理”中选择“存储 > 数据卷(PV)”,进入“数据卷(PV)”界面。
创建PV
前提条件
-
用户权限:用户具有“platform-admin和cluster-admin”权限。
-
存储后端配置:在创建PV之前,需要确保集群中已经配置了支持的存储后端(如NFS、Ceph、iSCSI、云存储等)。存储系统需要根据特定的需求进行配置和管理。
-
存储资源可用:PV所引用的物理存储已经存在并可以被访问。对于云存储,需要提前创建对应的存储卷。
背景信息
PV是集群中对物理存储资源的抽象,它表示持久化存储的具体实现,来源于不同存储系统的卷(如块存储、文件存储等)。PV是由管理员配置的,并被集群用于与PVC绑定提供存储服务。PV的创建通常需要指定存储的容量、访问模式、存储类型、挂载方式等。
使用限制
-
绑定限制:PV只能与一个PVC绑定,PVC只能与一个PV绑定。绑定关系创建后不可更改,除非手动解除绑定。
-
访问模式限制:访问模式(如ReadWriteOnce、ReadOnlyMany、ReadWriteMany)会限制PV的使用方式,必须满足访问需求的要求。
操作步骤
- 在列表信息的右上角单击“创建”,进入“YAML创建”界面。
- 编辑YAML。
- 单击“确定”完成创建。
相关操作
您可以在列表页面或者单击名称查看PV的相关信息,您还可以在列表页面单击操作列或在详情页面单击右上角的“操作”,按需修改和删除PV。
使用PVC
PVC是用户声明的对存储资源的需求,定义了所需的存储大小、访问模式等。在openFuyao平台左侧导航栏“资源管理”中选择“存储 > 数据卷声明(PVC)”,进入“数据卷声明(PVC)”界面。
创建PVC
前提条件
-
存储类(StorageClass)定义:PVC需要指定一个存储类(StorageClass)来确定使用的存储类型,或者根据已有的PV来匹配存储资源。
-
可用PV资源:需要集群中有可用的PV来满足PVC的存储请求,或支持动态供应。
-
PVC访问模式要求:PVC需要指定访问模式,这应与所需的存储访问权限匹配。
背景信息
PVC是用户声明对存储资源的请求,表示应用程序对存储容量、访问模式等需求。用户通过PVC请求存储资源,Kubernetes根据PVC的要求绑定合适的PV。PVC是Kubernetes存储资源分配的核心,它抽象了存储的具体细节,使用户可以以声明式的方式申请存储。
使用限制
-
大小限制:PVC请求的存储大小不能大于可用PV的容量。PVC的大小一旦设置,就不可调整(除非重新申请PVC)。
-
访问模式限制:PVC请求的访问模式必须与绑定的PV匹配。例如,ReadWriteOnce PVC只能绑定到支持该访问模式的PV。
-
存储类限制:如果PVC没有指定SC,它会尝试绑定到一个默认的SC,或者根据已有的PV来满足请求。
操作步骤
- 在列表信息的右上角单击“创建”,进入“YAML创建”界面。
- 编辑YAML。
- 单击“确定”完成创建。
相关操作
您可以在列表页面或者单击名称查看PVC的相关信息,您还可以在列表页面单击操作列或在详情页面单击右上角的“操作”,按需修改和删除PVC。
使用SC
SC定义了存储资源的类,用于动态供应PV。它定义了存储的类型、性能等特性。在openFuyao平台左侧导航栏“资源管理”中选择“存储 > 存储池(SC)”,进入“存储池(SC)”界面。
创建SC
前提条件
-
存储提供商支持:在创建SC之前,确保集群中安装了支持的存储提供商和动态供应插件(如云提供商的存储卷插件、Ceph和NFS等)。
-
用户权限:用户具有“platform-admin和cluster-admin”权限,用来对存储后端的配置和访问控制。
-
存储参数配置:需要知道存储后端的参数,如存储类型、性能要求等。
背景信息
SC是Kubernetes中的一种资源对象,它允许管理员定义不同类型的存储类,并为用户提供存储的动态供应能力。每个SC都与一个Provisioner和相关参数绑定,用于指定存储资源的类型(如云存储、NFS、Ceph等)。SC允许通过自动化动态供应(Dynamic Provisioning)为PVC提供持久存储,无需手动配置PV。
使用限制
-
存储类型限制:SC的provisioner字段需要与集群支持的存储插件匹配。比如AWS存储类只能用于支持AWS EBS的集群。
-
不可修改:一旦SC创建完成,不能修改其存储插件或其他关键信息。
操作步骤
- 单击“创建”,进入“YAML创建”界面。
- 编辑YAML。
- 单击“确定”完成创建。
相关操作
您可以在列表页面或者单击名称查看SC的相关信息,您还可以在列表页面单击操作列或在详情页面单击右上角的“操作”,按需修改和删除SC。