(已弃用)挂载云盘

更新时间: 2023-06-14 15:30:52

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

前提条件

  • 自建Kubernetes集群中已部署VNode。

  • 如果您的Kubernetes集群部署在线下IDC,请确保已打通IDC与阿里云的网络。

注意事项

挂载云盘时,请注意以下事项:

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

  • 云盘只能挂载到相同可用区的VNode节点下的ECI Pod,不支持跨可用区挂载。

随Pod创建并挂载云盘

  1. 准备YAML。

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-csi-disk
      labels:
        alibabacloud.com/eci: "true"
    spec:
      nodeSelector:
        k8s.aliyun.com/vnode: "true"
      tolerations:
      - key: k8s.aliyun.com/vnode
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"
      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。

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

    kubectl create -f test-csi-disk.yaml
  3. 查看结果。

    1. 查看Pod信息。

      kubectl get pods -o wide

      预期返回:

      NAME            READY   STATUS    RESTARTS   AGE   IP              NODE                                  NOMINATED NODE   READINESS GATES
      test-csi-disk   1/1     Running   0          94s   172.16.XX.XXX   cn-beijing.vnd-2zedtmwhcv8kbuou****   <none>           <none>

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

      非PVC云盘csi-1
    2. 查看云盘。

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

挂载已有云盘

  1. 获取云盘信息。

    说明

    如果您使用已有云盘,请确保该云盘所属的地域和可用区与VNode一致,且该云盘未进行分区格式化。

    1. 登录ECS管理控制台

    2. 选择VNode所在地域。

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

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

  2. 准备YAML。

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: disk-test-csi
      labels:
        alibabacloud.com/eci: "true"
    spec:
      nodeSelector:
        k8s.aliyun.com/vnode: "true"
      tolerations:
      - key: k8s.aliyun.com/vnode
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"
      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-2zegp8jd93m7j3hr****"

    在volumeAttributes中必须通过volumeId指定要挂载的云盘,即云盘ID。

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

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

    1. 查看Pod信息。

      kubectl get pods -o wide

      预期返回:

      NAME            READY   STATUS    RESTARTS   AGE     IP              NODE                                  NOMINATED NODE   READINESS GATES
      disk-test-csi   1/1     Running   0          2m25s   172.16.XX.XXX   cn-beijing.vnd-2zedtmwhcv8kbuou****   <none>           <none>

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

      非PVC云盘csi-2
    2. 查看云盘。

      登录ECS管理控制台,选择VNode所在地域,在云盘页面,您可以看到云盘的状态已变更为使用中

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