挂载云盘

云盘是阿里云提供的数据块级别的存储产品,具有低时延、高性能、持久性、高可靠等特点。在阿里云ACK或者ASK集群中,挂载云盘到ECI Pod时,您可以通过PVC的方式挂载,也可以通过非PVC的方式挂载。使用非PVC方式挂载云盘时,支持随Pod创建并挂载云盘,或者直接挂载已有云盘。本文介绍如何使用非PVC方式,挂载云盘到ECI Pod上。

前提条件

集群中已正确部署Virtual kubelet(VK)。

说明

ASK集群已默认集成VK,其它集群需要您自行部署VK。更多信息,请参见对接概述

使用限制

  • 云盘为非共享存储,一个云盘只能挂载到一个Pod。

  • 不支持跨可用区挂载云盘。

  • 不支持挂载已创建分区的云盘。

随Pod创建并挂载云盘

  1. 连接ACK或ASK集群。

  2. 准备YAML。

    将以下内容保存为test-ack-disk.yaml。

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-ack-disk
      labels:
        alibabacloud.com/eci: "true"
    spec:
      containers:
      - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
        name: test-container
        volumeMounts:
        - mountPath: /cache-test
          name: cache-volume
      volumes:
      - name: cache-volume
        csi:
          driver: diskplugin.csi.alibabacloud.com
          fsType: ext4
          volumeAttributes:
            volumeSize: "20"
            tags: "test:eci"

    volumeAttributes中支持设置的云盘属性参数如下表所示:

    参数

    描述

    volumeSize

    必填参数。云盘大小,单位为GiB。取值范围为20~32768。

    说明

    如果基于快照创建云盘(配置了snapshotid参数),则实际创建的云盘大小为以下两者的较大值:

    • 此处配置的值

    • 快照来源云盘大小

    performanceLevel

    云盘性能等级。默认采用ESSD云盘,暂不支持指定云盘类型。更多信息,请参见ESSD云盘

    deleteWithInstance

    是否随实例释放云盘,默认为true。

    encrypted

    是否加密云盘,默认为false。更多信息,请参见加密概述

    kmsKeyId

    加密云盘时,云盘使用的KMS密钥ID。

    tags

    云盘要绑定的标签(Tag),最多可以绑定20个。格式为"tagkey1:tagvalue1,tagkey2:tagvalue2"

    snapshotid

    快照ID。快照是某一时间点云盘数据状态的备份文件,基于快照创建的云盘可以获取快照来源云盘包含的数据。更多信息,请参见快照概述

    重要

    如果快照来源云盘已创建过分区,则不支持使用该快照创建云盘挂载到ECI Pod。

  3. 创建ECI Pod,同时创建并挂载云盘。

    kubectl create -f test-ack-disk.yaml
  4. 查看结果。

    1. 查看Pod信息。

      kubectl get pods -o wide

      预期返回:

      NAME            READY   STATUS    RESTARTS   AGE   IP              NODE                           NOMINATED NODE   READINESS GATES
      test-ack-disk   1/1     Running   0          84s   172.16.XX.XXX   virtual-kubelet-cn-beijing-k   <none>           <none>

      查看Pod中的文件目录,可以看到已生成云盘对应的挂载目录/cache-test

      ACK存储云盘
    2. 查看云盘。

      登录ECS管理控制台,选择VK所在地域,在云盘页面,您可以看到系统已自动创建云盘,该云盘名称为cache-volume 。

挂载已有云盘

挂载已有云盘前,请确保已有云盘未进行分区格式化,并确保该云盘与VK所属的地域可用区一致。

说明

VK对应节点的名称表明了其所属可用区。例如virtual-kubelet-cn-beijing-k表示VK部署在华北2(北京)地域可用区K。

  1. 获取待挂载云盘ID。

    1. 登录ECS管理控制台

    2. 云盘页面,找到已有云盘,记录云盘ID。

      同一云盘不支持挂载到多个Pod,请确保已有云盘的状态为待挂载

  2. 准备YAML。

    将以下内容保存为disk-test-ack.yaml,其中volumeId的取值请替换为步骤1获取的云盘ID。

    apiVersion: v1
    kind: Pod
    metadata:
      name: disk-test-ack
      labels:
        alibabacloud.com/eci: "true"
    spec:
      containers:
      - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
        name: test-container
        volumeMounts:
        - mountPath: /cache-test
          name: cache-volume
      volumes:
      - name: cache-volume
        csi:
          driver: diskplugin.csi.alibabacloud.com
          fsType: ext4
          volumeAttributes:
            volumeId: "d-2ze2qt6x88mv2ih8****"
  3. 创建ECI Pod并挂载云盘。

    kubectl create -f disk-test-ack.yaml
  4. 查看结果。

    kubectl get pods -o wide

    预期返回如下:

    NAME            READY   STATUS    RESTARTS   AGE   IP              NODE                           NOMINATED NODE   READINESS GATES
    disk-test-ack   1/1     Running   0          32s   172.16.XX.XXX   virtual-kubelet-cn-beijing-k   <none>           <none>

    确认Pod的状态为Running后,查看Pod中的文件目录,如果看到已生成云盘对应的挂载目录/cache-test,则表示云盘挂载成功。

    ACK存储云盘2
    说明

    挂载成功后,在ECS管理控制台云盘页面,您可以看到云盘的状态已变更为使用中,且在挂载实例列可以看到对应的ECI实例ID。

阿里云首页 弹性容器实例 相关技术圈