You need to enable JavaScript to run this app.
导航
使用云盘静态存储卷
最近更新时间:2024.11.19 19:55:11首次发布时间:2022.03.04 23:10:39

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

前提条件

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

使用限制

  • 包年包月类型的云盘,暂不支持挂载、卸载操作,请勿将云盘计费类型改为包年包月。
  • 云盘为火山存储团队提供的非共享存储,只能同时被一个 Pod 挂载,仅支持 ReadWriteOnce 使用模式。
  • 有状态负载每个实例需要独占一个卷,不支持所有实例共用一个手动创建的存储卷声明。
  • 无状态负载(Deployment)挂载云盘时 Replica 需要配置为 1,无法为每个 Pod 配置独立的存储卷,且不能保证挂载、卸载的优先顺序。另外,无状态负载(Deployment)的升级策略,重启 Pod 时新的 Pod 可能一直无法挂载,因此,推荐使用有状态应用(StatefulSet)挂载使用云盘。
  • 当 csi-ebs 组件版本低于 v1.1.2 时,不支持使用三代机(例如:g3i、c3i、r3i 等)。若存在三代机使用需求,需确保 csi-ebs 组件不低于 v1.1.2 版本,推荐定期升级组件到最新版本,更多组件发布记录参见:csi-ebs 组件发布记录
  • 每个节点最多可挂载云盘数量由 ECS 机型决定,容器服务侧会预留 30% 给系统盘和数据盘,例如:ECS 实例最多允许挂 16 块云盘时,容器服务侧最多允许挂载 16-0.3*16=12 块 EBS PVC。ECS 实例规格族更多介绍参见:实例规格介绍
  • 云盘类型和ECS类型需要匹配才可以挂载,否则会挂载失败,云盘类型与 ECS 类型的匹配关系参见:实例规格介绍。此外,云盘只能挂载到相同可用区的 ECS 实例,不支持跨可用区挂载。
  • 使用云盘存储卷时,若在应用模板中配置了 securityContext.fsgroup 参数,kubelet 在存储卷挂载完成后会执行chmodchown操作,导致挂载时间延长。

通过控制台使用

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

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

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

步骤二:创建存储卷(PV)

  1. 在集群管理页面,选择 存储管理 > 存储卷
  2. 单击存储卷列表左上角 创建存储卷
  3. 在弹出的 创建存储卷 页面,完成参数配置。其中,存储类型选择 云盘
    alt
    配置项说明
    创建方式选择存储卷的创建方式,支持 静态创建,即由管理员创建 PV。
    名称根据系统提示,自定义存储卷的名称。需确保存储卷名称在集群内唯一。
    存储卷类型存储卷类型包括:云盘、文件存储、对象存储。本场景选择 云盘:即使用云服务器(ECS)提供块存储服务,创建存储卷。
    访问模式选择存储卷的访问方式,目前支持 ReadWriteOnce ,此访问方式支持单点读写。

    云盘类型

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

    说明

    不同性能的极速型 SSD 云盘提供的最大 IOPS、最大吞吐量、时延等性能值不同。

    云盘

    选择与集群属于相同地域和可用区,且处于待挂载状态的云盘。

    注意

    请确保所选的云盘所在节点,其已挂载的云盘数量不超过 10 个。否则该存储卷挂载到工作负载后,不能成功启动 Pod。

    文件系统类型选择存储数据到云盘时的数据类型。目前支持 EXT4
  4. 配置完成后,单击 确定,完成存储卷创建。

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

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

    云盘类型

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

    说明

    不同性能的极速型 SSD 云盘提供的最大 IOPS、最大吞吐量、时延等性能值不同。

    创建方式存储卷声明的创建方式包括:基于存储类创建、使用已有存储卷。本场景选择 使用已有存储卷
    存储卷选择本文上方步骤二中创建的云盘类型存储卷进行关联挂载。
  4. 配置完成后,单击 确定,完成存储卷声明创建。

步骤四:工作负载添加卷

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

alt

通过 kubectl 命令行使用

准备工作

步骤一:创建 PV

  1. 创建 PV 的 YAML 文件。示例文件pv-ebs-essd-static.yaml代码如下:

    说明

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

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-ebs-essd-static
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 20Gi
      csi:
        driver: ebs.csi.volcengine.com
        fsType: ext4
        volumeAttributes:
          ChargeType: PostPaid
          type: ESSD_PL0    # 云盘类型,云盘名称必须大写
          ExtraPerformanceType: IOPS              # 额外性能类型,包括:IOPS、Balance、Throughput。仅 type 为 ESSD_FlexPL,且云盘容量大于 500 时间生效。
          ExtraPerformanceIOPS: 1000              # 额外性能的 IOPS。仅额外性能类型为 IOPS 或 Balance 生效,取值范围 1-50000。
          ExtraPerformanceThroughputMB: 100       # 额外性能包的吞吐量。与 ExtraPerformanceIOPS 参数不同时出现,且额外性能类型为 Throughput 时生效。
          zone: cn-beijing-a
        volumeHandle: vol-cmukmy9yi5bi254b****  #指定已有的极速型SSD云盘 ID
      volumeMode: Filesystem
    
  2. 执行以下命令,创建 PV。

    kubectl apply -f pv-ebs-essd-static.yaml
    

步骤二:创建 PVC

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

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-ebs-essd-static
      namespace: default
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeMode: Filesystem
      volumeName: pv-ebs-essd-static
    
  2. 执行以下命令创建 PVC。

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

步骤三:创建 Deployment

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

    说明

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nginx-static
    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-static  #步骤二中创建的 PVC 名称
    
  2. 执行以下命令创建 Deployment。

    kubectl apply -f deployment-nginx-static.yaml
    

相关文档