You need to enable JavaScript to run this app.
导航

使用云盘动态存储卷

最近更新时间2023.12.04 10:17:08

首次发布时间2022.03.04 23:10:39

本文介绍如何创建云盘类型存储类和存储卷声明,以及工作负载如何使用云盘动态存储卷。

前提条件

  • 已创建容器服务集群,操作方法参见 创建集群
  • 确保当前集群已安装存储服务组件 csi-ebs。操作方法,请参见 安装组件

使用限制

  • 单个节点最多可挂载 10 个通过云盘创建的存储卷。
  • 有状态负载需要独占一个卷,暂不支持使用手动创建的存储卷声明。

通过控制台使用

使用云盘类型动态存储卷的详细操作步骤和参数配置如下:

步骤一:登录集群管理页面

  1. 登录 容器服务控制台
  2. 在容器服务的左侧导航栏,选择 集群
  3. 单击目标集群名称,进入集群管理页面。

步骤二:创建存储类(StorageClass)

  1. 在集群管理页面,选择 存储管理 > 存储类
  2. 单击存储类列表左上角 创建存储类
  3. 在弹出的 创建存储类 页面,完成参数配置。
    alt
    配置项说明
    名称根据系统提示,自定义存储类名称,需确保存储类名称在集群内唯一。
    存储类型存储类型包括:云盘、文件存储。本场景选择 云盘,即使用云服务器(ECS)提供块存储服务,创建存储类。

    可用区

    可用区是同一地域下电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。更多可用区说明,请参见 地域和可用区
    跨可用区集群可以指定可用区创建数据云盘。

    计费类型按需选择资源计费类型,目前支持按量计费。

    云盘类型

    不同地域支持的云盘类型可能不同,请按需使用。目前支持的云盘类型包括: 性能型 SSD极速型 SSD。详细的云盘说明及规格对比,请参见 云盘规格

    说明

    • 性能型 SSD 类型的云盘对应的存储卷不支持弹性容器 VCI 挂载使用。
    • 不同性能的极速型 SSD 云盘提供的最大 IOPS、最大吞吐量、时延等性能值不同。

    回收策略

    云盘的回收策略,包括:Delete、Retain。如果数据安全性要求高,推荐使用 Retain 方式以免误删数据。

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

    存储卷模式绑定

    云盘的绑定模式。包括:

    • Immediate:随存储卷声明的创建直接完成卷的绑定和分配。
    • WaitForFirstConsumer:延迟存储卷的绑定和分配,直到使用该存储卷声明的 Pod 被创建。
  4. 配置完成后,单击 确定,完成存储类创建。

步骤三:创建存储卷声明(PVC)

  1. 在集群管理页面,选择 存储管理 > 存储卷声明
  2. 单击存储卷列表左上角 创建存储卷声明
  3. 在弹出的 创建存储卷声明 页面,完成参数配置。其中,存储类型选择 云盘
    alt
    配置项说明
    命名空间选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述
    名称根据系统提示自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。
    存储类型存储类型包括:云盘、文件存储、对象存储。本场景选择 云盘
    访问模式选择存储卷声明的访问方式,目前支持 ReadWriteOnce ,此访问方式支持单点读写。
    计费类型按需选择资源计费类型,目前支持按量计费。

    云盘类型

    不同地域支持的云盘类型可能不同,请按需使用。目前支持 性能型 SSD极速型 SSD 两种云盘类型。详细的说明及云盘规格对比,请参见 云盘规格

    说明

    • 性能型 SSD 类型的云盘对应的存储卷不支持弹性容器 VCI 挂载使用。
    • 不同性能的极速型 SSD 云盘提供的最大 IOPS、最大吞吐量、时延等性能值不同。
    创建方式存储卷声明的创建方式包括:基于存储类创建、使用已有存储卷。本场景选择 基于存储类创建
    存储类自动绑定具有相同存储类,且容量大于或等于当前 PVC 设置的容量大小的存储卷。
    类型指定硬盘类型,目前支持性能型 SSD。
    容量所创建存储卷容量。
  4. 配置完成后,单击 确定,完成存储卷声明创建。

步骤四:工作负载添加卷

云盘类型的动态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、任务、定时任务、守护进程。
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作,请参见 工作负载
alt

通过 kubectl 命令行使用

准备工作

步骤一:创建 StorageClass

  1. 创建 StorageClass 的 YAML 文件。示例文件storage-class-ebs-essd.yaml代码如下:

    说明

    当前支持 PTSSD、ESSD_PL0、ESSD_FlexPL 三种云盘类型。详细的说明及云盘规格对比,请参见 云盘规格

    allowVolumeExpansion: true
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ebs-essd-immd-cn-beijing-a
    parameters:
      ChargeType: PostPaid
      type: ESSD_PL0     # 云盘类型,云盘的名称必须大写
      zone: cn-beijing-a
      projectName: default
    provisioner: ebs.csi.volcengine.com
    reclaimPolicy: Delete
    volumeBindingMode: Immediate  #多 AZ 场景建议使用 Topology
    
  2. 执行以下命令创建 StorageClass。

    kubectl apply -f storage-class-ebs-essd.yaml
    

步骤二:创建 PVC

  1. 创建 PVC 的 YAML 文件。示例文件pvc-ebs-essd-dynamic.yaml代码如下:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-ebs-essd
      namespace: default
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      storageClassName: ebs-essd-immd-cn-beijing-a  #步骤一中创建的 StorageClass 名称
      volumeMode: Filesystem
    
  2. 执行以下命令创建 PVC。

    kubectl apply -f pvc-ebs-essd-dynamic.yaml
    

步骤三:创建 Deployment

  1. 创建 Deployment 的 YAML 文件。示例文件deployment-nginx-dynamic.yaml代码如下:

    说明

    如果有使用弹性容器实例 VCI 的需求,需要在代码的spec.template.metadata.annotations中添加vke.volcengine.com/burst-to-vci: enforce`。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势。详细介绍,请参见 什么是弹性容器实例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nginx-dynamic
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          annotations:
          # vke.volcengine.com/burst-to-vci: enforce  # 强制使用 VCI,如果有 VCI 需求需要添加本行注解
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx-c1
            image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest #指定需要部署的镜像文件
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: ebs-essd-volume0
              mountPath: /data
          volumes:
            - name: ebs-essd-volume0
              persistentVolumeClaim:
                claimName: pvc-ebs-essd  #步骤二中创建的 PVC 名称
    
  2. 执行以下命令创建 Deployment。

    kubectl apply -f deployment-nginx-dynamic.yaml
    

相关文档