云盘是阿里云为云服务器ECS提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。ACK支持使用CSI插件创建云盘静态存储卷和动态存储卷。本文介绍如何在CSI插件中挂载云盘静态存储卷。

前提条件

  • 您已经创建好一个Kubernetes集群,并且在该集群中安装CSI插件。具体操作,请参见安装CSI插件
  • 您已经创建好一个按量付费的云盘并记录云盘ID为d-wz92s6d95go6ki9x****。请参见创建云盘
    说明 申请云盘时,请遵循如下容量限制:
    • 高效云盘:最小20 GiB。
    • SSD云盘:最小20 GiB。
    • ESSD云盘:最小20 GiB。

通过kubectl命令行的方式使用云盘静态存储卷

通过kubectl命令行的方式使用云盘静态存储卷前,请确保您可以使用kubectl命令链接集群。具体操作,请参见通过kubectl连接Kubernetes集群

步骤一:创建静态PV和PVC。

通过以下模板创建静态卷PV和PVC。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 25Gi
  selector:
    matchLabels:
      alicloud-pvname: static-disk-pv
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: csi-pv
  labels:
    alicloud-pvname: static-disk-pv
spec:
  capacity:
    storage: 25Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: diskplugin.csi.alibabacloud.com
    volumeHandle: d-wz92s6d95go6ki9x****
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: topology.diskplugin.csi.alibabacloud.com/zone
          operator: In
          values:
          - cn-shenzhen-a
参数 描述
driver 定义驱动类型。

取值为diskplugin.csi.alibabacloud.com,表示使用阿里云云盘CSI插件。

volumeHandle 定义云盘ID。
nodeAffinity 定义PV和PVC所属的区域信息。

通过定义该参数,可以将PV和PVC所在的Pod调度到对应的区域上。

步骤二:创建应用。

  1. 创建nginx-disk-dept.yaml文件并拷贝以下内容到文件中。
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: csi-pvc
  2. 执行以下命令,创建一个挂载了云盘静态存储卷的应用。
    kubectl apply -f nginx-disk-dept.yaml

通过控制台的方式使用云盘静态存储卷

步骤一:创建PV。

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择存储 > 存储卷
  5. 存储卷页面,单击右上角的创建
  6. 创建存储卷对话框中配置参数。
    参数 描述
    存储卷类型 支持云盘、NAS、OSS三种云存储类型。本文中选择为云盘
    存储驱动 支持Flexvolume和CSI。本文中选择为CSI
    访问模式 默认为ReadWriteOnce。
    云盘ID 您可以选择与集群属于相同地域和可用区下处于待挂载状态的云盘。
    文件系统类型 您可以选择以什么数据类型将数据存储到云盘上,支持的类型包括ext4ext3xfsvfat。默认为ext4
    标签 为该数据卷添加标签。
  7. 参数配置完成后,单击创建

步骤二:创建PVC。

  1. 在集群管理页左侧导航栏中,选择存储 > 存储声明
  2. 存储声明页面,单击右上角的创建
  3. 创建存储声明对话框中,配置参数。
    参数 描述
    存储声明类型 支持云盘、NAS、OSS三种云存储类型。本文中选择云盘
    名称 创建的数据卷的名称,数据卷名在命名空间内必须唯一。
    分配模式 本文中选择已有存储卷。
    说明 若未创建存储卷,您可以设置分配模式创建存储卷,配置创建存储卷参数,详情请参见创建PV
    已有存储卷 单击已有存储卷,在目标存储卷右侧操作列单击选择,选择存储卷。
    总量 所创建存储卷的容量。
    说明 所创建的存储卷容量不能超过磁盘容量。
    访问模式 默认为ReadWriteOnce。
  4. 单击创建
    创建成功后可以在列表中看到存储声明,并且已绑定相应的存储卷。

步骤三:创建应用

  1. 在集群管理页左侧导航栏中,选择工作负载 > 无状态
  2. 无状态页面中,单击使用镜像创建
  3. 配置创建应用的参数信息。
    以下主要为您介绍数据卷的配置。关于其他参数的描述,请参见创建无状态工作负载Deployment
    ACK数据卷支持配置本地存储和云存储。
    • 本地存储:支持主机目录(HostPath)、配置项(ConfigMap)、保密字典(Secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息参见volumes
    • 云存储:支持云存储类型。
    本例中配置了一个云盘类型的数据卷,将该云盘挂载到容器中/tmp路径下,在该路径下生成的容器数据会存储到云盘中。
  4. 所有的信息都配置完成后,单击创建
    创建成功后,您就可以正常使用数据卷。