全部产品
Search
文档中心

弹性容器实例:挂载云盘(非PVC)

更新时间:May 26, 2022

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

前提条件

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

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

注意事项

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

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

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

随Pod创建并挂载云盘

  1. 准备YAML。

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-flex-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
        flexVolume:
          driver: alicloud/disk
          fsType: ext4
          options:
            volumeSize: "20"
  2. 创建Pod,同时创建并挂载云盘。

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

    1. 查看Pod信息。

      kubectl get pods -o wide

      预期返回:

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

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

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

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

挂载已有云盘

  1. 获取云盘信息。

    说明

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

    1. 登录ECS管理控制台

    2. 选择VNode所在地域。

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

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

  2. 准备YAML。

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: disk-test-flex.
      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
        flexVolume:
          driver: alicloud/disk
          fsType: ext4
          options:
            volumeSize: "20"
            volumeId: d-2zegp8jd93m7j3hr****

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

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

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

    1. 查看Pod信息。

      kubectl get pods -o wide

      预期返回:

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

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

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

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