使用云盘动态存储卷

更新时间:2025-04-03 03:07

云盘是阿里云为云服务器ECS提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。ACK Serverless支持使用CSI插件创建云盘动态存储卷。本文介绍如何使用云盘动态存储卷,及如何验证云盘动态存储卷的持久化存储特性。

使用场景

云盘适用于以下存储场景:

  • 对磁盘I/O要求高的应用,且没有共享数据的需求,如MySQL、Redis等数据存储服务。

  • 高速写日志。

  • 持久化存储数据,不会因Pod生命周期的结束而消失。

除了基于已有云盘创建静态存储卷外,您也可以使用StorageClass(存储类)来定义云盘资源,实现动态创建和分配存储资源。通过在PVC(存储声明)中关联StorageClass,系统会自动根据配置创建并绑定PV(存储卷)。该方式无需预先手动创建和配置存储资源,可以降低底层基础设施的复杂性,让您更关注应用的存储需求。

ACK Serverless集群默认不提供StorageClass,您需要根据需求自行创建StorageClass。

说明

Kubernetes提供Default StorageClass机制,您在PVC不指定StorageClass的情况下,可以通过Default StorageClass创建数据卷。更多关于Kubernetes存储相关的信息,请参见存储基础知识

前提条件

操作步骤

控制台
kubectl

步骤一:创建StorageClass

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储类

  3. 存储类页面,单击右上角的创建

  4. 创建对话框,配置StorageClass的相关参数。

    部分配置项说明如下所示:

    配置项

    说明

    名称

    StorageClass的名称。格式要求请参考界面提示。

    存储卷类型

    选择云盘

    参数

    默认参数type,其值为cloud_essd。表示云盘类型。 支持设置的参数值如下:

    • cloud_essd:ESSD云盘

    • cloud_regional_disk_auto:ESSD 同城冗余云盘

    • elastic_ephemeral_disk_premium:弹性临时盘-高级版

    • elastic_ephemeral_disk_standard:弹性临时盘-标准版

    • cloud_ssd:SSD云盘

    • cloud_efficiency:高效云盘

    支持任意组合上述参数,例如:type: cloud_ssd,cloud_essd,此时将按照配置顺序依次尝试创建指定类型的云盘,直到创建成功。

    说明

    部分ECS机型不支持ESSD、弹性临时盘等类型的云盘挂载。更多信息,请参见块存储FAQ

    可添加自定义参数。例如,配置zoneId,表示自动创建云盘所在的区域。单可用区集群,与集群所在区域相同。例如,cn-beijing-a;多可用区集群,zoneId可同时配置多个。例如,cn-beijing-a, cn-beijing-b

    回收策略

    云盘的回收策略,默认为Delete,支持Retain

    • Delete模式:删除PVC的时候,PV和云盘会一起删除。

    • Retain模式:删除PVC的时候,PV和云盘数据不会被删除,需要您手动删除。

    如果数据安全性要求高,推荐使用Retain模式以免误删数据。

    绑定模式

    云盘的绑定模式。默认为Immediate:表示先创建云盘再创建Pod。

  5. 参数配置完成后,单击创建

    创建成功后在存储类列表中可看到刚创建的StorageClass。

步骤二:创建PVC

  1. 在集群管理页左侧导航栏,选择存储 > 存储声明

  2. 存储声明页面,单击右上角的创建

  3. 创建存储声明对话框中,配置参数。

    配置项

    说明

    存储声明类型

    支持云盘、NAS两种云存储类型。本文中选择云盘

    名称

    创建的存储声明名称在命名空间内必须唯一。

    分配模式

    本文中选择使用存储类动态创建

    已有存储类

    单击选择存储类,在选择存储类对话框目标存储类右侧操作列单击选择

    总量

    所创建存储卷的容量。

    访问模式

    默认为ReadWriteOnce

  4. 单击创建

    创建成功后在存储声明列表中可看到创建的存储声明,并且已绑定相应的存储卷。

步骤三:创建应用

  1. 在集群管理页左侧导航栏,选择工作负载 > 有状态

  2. 有状态页面,单击使用镜像创建

  3. 配置创建应用的参数信息。
    以下主要为您介绍数据卷的配置。关于其他参数的描述,请参见创建有状态工作负载StatefulSet

    ASK数据卷支持配置本地存储和云存储,本示例需要配置云存储类型。

    本例中配置了一个云盘类型的数据卷,将该云盘挂载到容器中/tmp路径下,在该路径下生成的容器数据会存储到云盘中。数据存储
  4. 所有的信息都配置完成后,单击创建
    创建成功后,您就可以正常使用数据卷。

步骤一:创建StorageClass

在多可用区集群场景下,您可以使用先创建云盘,然后再创建Pod的方式创建StorageClass。

  1. 使用以下内容,创建storage-class-csi.yaml文件。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-ssd-b
    provisioner: diskplugin.csi.alibabacloud.com
    parameters:
      type: cloud_essd,cloud_ssd,cloud_efficiency
      encrypted: "false"
    reclaimPolicy: Retain
    allowVolumeExpansion: true
    volumeBindingMode: Immediate

    参数

    说明

    provisioner

    配置为diskplugin.csi.alibabacloud.com。表示使用阿里云云盘Provisioner插件创建StorageClass。

    type

    表示云盘类型。支持设置的参数值如下:

    • cloud_auto:ESSD AutoPL云盘

    • cloud_essd(默认值):ESSD云盘

    • cloud_essd_entry:ESSD Entry云盘

    • cloud_ssd:SSD云盘

    • cloud_efficiency:高效云盘

    • elastic_ephemeral_disk_standard: 标准版弹性临时盘

    • elastic_ephemeral_disk_premium: 高级版弹性临时盘

    • cloud_regional_disk_auto: ESSD同城冗余云盘

    支持任意组合上述参数,例如:type: cloud_ssd,cloud_essd,cloud_auto,此时将按照配置顺序依次尝试创建指定类型的云盘,直到创建成功。

    重要

    您可以基于节点可用区和实例规格,结合云盘计费、性能等选择合适的云盘类型。相关参考如下:

    encrypted

    可选,标识创建的云盘是否加密。默认为false,创建的云盘不加密。

    reclaimPolicy

    云盘的回收策略,默认为Delete,支持Retain

    • Delete模式:删除PVC时,PV和云盘会一起删除。

    • Retain模式:删除PVC时,PV和云盘数据不会被删除,需要您手动删除。

    如果数据安全性要求高,推荐使用Retain方式以免误删数据。

    allowVolumeExpansion

    配置为true时,可以实现云盘的自动扩容。

    volumeBindingMode

    云盘的绑定模式。默认为Immediate:表示先创建云盘再创建Pod。

  2. 执行以下命令,创建StorageClass。

    kubectl apply -f storage-class-csi.yaml
  3. 查看创建的StorageClass。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储类

    3. 存储类页面查看创建的StorageClass。

步骤二:创建PVC

  1. 使用以下内容,创建pvc-ssd.yaml文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 25Gi
      storageClassName: alicloud-disk-ssd-b

    参数

    说明

    name

    PVC的名称。

    accessModes

    配置访问模式。

    volumeMode

    可选,挂载云盘的格式,支持Filesystem文件系统挂载。

    storageClassName

    StorageClass的名称,用于绑定StorageClass。

    storage

    申请的云盘大小,最小为20 GiB。

  2. 执行以下命令,创建PVC。

    kubectl create -f pvc-ssd.yaml
  3. 查看创建的PVC。

    在集群管理页左侧导航栏选择存储 > 存储声明。可以在存储声明页面看到创建的PVC。

步骤三:创建应用

  1. 创建pvc-dynamic.yaml文件。

    创建一个名为nginx-dynamic的应用,并挂载PVC。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx-dynamic
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc

    参数

    说明

    mountPath

    云盘挂载的位置。

    claimName

    PVC的名称,用于绑定PVC。

  2. 执行以下命令,创建应用并挂载PVC。

    kubectl create -f pvc-dynamic.yaml
  3. 查看创建的应用。

    在集群管理页左侧导航栏选择工作负载 > 有状态。您可以在有状态页面看到创建的应用。

相关文档

  • 本页导读 (1)
  • 使用场景
  • 前提条件
  • 操作步骤
  • 相关文档
文档反馈