Kubernetes 存储选项:持久化卷与存储类

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测链路 OpenTelemetry 版,每月50GB免费额度
性能测试 PTS,5000VUM额度
简介: 【8月更文第29天】随着容器化的普及,越来越多的应用程序需要持久化数据以保持状态信息。Kubernetes 提供了一套完整的解决方案来管理和配置持久化存储,包括持久卷 (Persistent Volume, PV)、持久卷声明 (Persistent Volume Claim, PVC) 和存储类 (StorageClass)。本文将详细介绍这些概念,并通过实际示例来演示如何在 Kubernetes 中配置存储。

引言

随着容器化的普及,越来越多的应用程序需要持久化数据以保持状态信息。Kubernetes 提供了一套完整的解决方案来管理和配置持久化存储,包括持久卷 (Persistent Volume, PV)、持久卷声明 (Persistent Volume Claim, PVC) 和存储类 (StorageClass)。本文将详细介绍这些概念,并通过实际示例来演示如何在 Kubernetes 中配置存储。

持久化卷 (PV)

持久化卷 (PV) 是集群中的一块存储空间,它独立于任何 Pod 的生命周期。PV 可以由管理员预先准备,也可以由系统自动创建。一旦 PV 被绑定到 PVC 后,它就会一直保留,直到 PVC 被删除。

持久化卷声明 (PVC)

持久化卷声明 (PVC) 是用户对存储资源的需求描述。当一个 PVC 被创建后,Kubernetes 会尝试查找与之匹配的 PV 并将其绑定到 PVC 上。

存储类 (StorageClass)

存储类 (StorageClass) 定义了创建 PV 的策略,比如存储类型、参数设置等。通过 StorageClass,用户可以指定 PVC 的存储需求,而不需要关心具体的存储实现细节。

配置示例

假设我们需要为一个应用部署持久化存储,以保存应用的数据。

步骤 1: 创建 StorageClass

首先,我们创建一个 StorageClass 来定义存储的策略。以下示例中,我们将使用一个 NFS 服务器作为后端存储。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage
provisioner: k8s-sigs/nfs-subdir-external-provisioner
parameters:
  nfsServer: nfs-server.example.com
  path: /k8s-volumes
reclaimPolicy: Delete
volumeBindingMode: Immediate

这个 StorageClass 定义了一个名为 nfs-storage 的存储类,使用 nfs-subdir-external-provisioner 作为存储提供者,指向 NFS 服务器 nfs-server.example.com 上的 /k8s-volumes 目录。

步骤 2: 创建 PVC

接下来,我们创建一个 PVC 来请求存储资源。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs-storage

在这个示例中,我们请求了一个大小为 1GB 的存储空间,并且指定了 ReadWriteOnce 的访问模式,同时关联了之前创建的 nfs-storage 存储类。

步骤 3: 创建 Deployment 使用 PVC

最后,我们需要创建一个 Deployment,并将 PVC 与 Pod 中的容器关联起来。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: "/data"
          name: data-volume
      volumes:
      - name: data-volume
        persistentVolumeClaim:
          claimName: myapp-pvc

在这个 Deployment 示例中,我们创建了一个名为 myapp-deployment 的 Deployment,并在其中挂载了 PVC 到容器的 /data 目录。

总结

通过上述步骤,我们成功地为 Kubernetes 应用程序配置了持久化存储。使用 PV、PVC 和 StorageClass,我们可以灵活地管理存储资源,并确保数据的持久性和可移植性。希望这篇文章能够帮助你在 Kubernetes 中有效地利用存储资源。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
16天前
|
存储 Kubernetes 容器
k8s创建NFS动态存储
k8s创建NFS动态存储
|
20天前
|
存储 Kubernetes Cloud Native
告别数据丢失的噩梦!PersistentVolume全攻略,让你轻松玩转Kubernetes数据持久化秘籍!
【8月更文挑战第25天】随着容器技术的发展,Kubernetes已成为云原生应用的主流部署平台。然而,数据持久化成为一个亟待解决的问题。Kubernetes通过PersistentVolume(PV)提供了解决方案。PV是一种存储资源对象,它抽象出底层存储技术(例如Ceph、GlusterFS或NFS),让用户仅需关注存储容量和访问模式等属性。PV由管理员创建与维护,Pod通过PersistentVolumeClaim(PVC)请求存储资源。本文详细介绍了PV的工作原理、配置方法及示例,帮助读者更好地理解和应用此功能。
33 2
|
26天前
|
存储 Kubernetes 调度
在k8S中,Pod如何实现数据持久化?数据共享?跨节点Pod如何实现数据共享?
在k8S中,Pod如何实现数据持久化?数据共享?跨节点Pod如何实现数据共享?
|
26天前
|
存储 Kubernetes 容灾
在k8S中,K8S持久化可以对接哪些储存,为什么要选择它?
在k8S中,K8S持久化可以对接哪些储存,为什么要选择它?
|
14天前
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
52 0
|
21天前
|
存储 Kubernetes 调度
在K8S中,是怎么实现数据持久化的?
在K8S中,是怎么实现数据持久化的?
|
26天前
|
存储 Kubernetes 数据安全/隐私保护
在K8S中,如果后端nfs存储的ip发生变化如何解决?
在K8S中,如果后端nfs存储的ip发生变化如何解决?
|
26天前
|
存储 缓存 Kubernetes
在K8S中,业务Pod数据如何存储?
在K8S中,业务Pod数据如何存储?
|
26天前
|
存储 JSON Kubernetes
在K8S中,存储敏感信息方式有哪些?
在K8S中,存储敏感信息方式有哪些?
|
26天前
|
存储 Kubernetes 容器
在k8S中,所支持的存储供应模式有哪些?
在k8S中,所支持的存储供应模式有哪些?

相关产品

  • 容器服务Kubernetes版