本文主要为您介绍如何在CSI插件中,通过 YAML 的方式挂载云盘静态存储卷。

前提条件

  • 您已经创建好一个Kubernetes集群,并且在该集群中部署CSI插件。
  • 您已经创建好一个按量付费的云盘。请参见创建按量付费云盘

创建静态 PV/PVC

通过云盘控制台创建云盘后,记录其 DiskId 为 d-wz92s6d95go6ki9xge6b

目前控制台只支持通过 YAML 模板创建 CSI PV 对象。

  1. 通过 kubectl 连接 Kubernetes 集群
  2. 通过下面模板创建静态卷 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-wz92s6d95go6ki9xge6b
      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 所属的 Zone 信息。

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

创建应用

  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

您也可以通过控制台的方式使用云盘静态存储卷,请参见通过控制台使用云盘静态存储卷