您可以直接通过volume使用阿里云云盘存储卷或者通过 PV/PVC 使用阿里云云盘存储卷。

前提条件

使用云盘数据卷之前,您需要先在 ECS 管理控制台上创建云盘。有关如何创建云盘,创建云盘

直接通过 volume 使用

使用disk-deploy.yaml文件创建 Pod。

  1. 创建并复制以下内容到disk-deploy.yaml中。
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1beta2
    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: d-wz9f6l6nm0uvazgh7y17
              mountPath: /data
          volumes:
            - name: "d-wz9f6l6nm0uvazgh7y17"
              flexVolume:
                driver: "alicloud/disk"
                fsType: "ext4"
                options:
                  volumeId: "d-wz9f6l6nm0uvazgh7y17"
  2. 执行如下命令,创建Pod。
    kubectl apply -f disk-deploy.yaml
说明

volumes中,name的取值建议和volumeId的取值保持一致。

如果您所使用的集群是多可用区的模式,使用云盘时需要进行可用区调度,即把 Pod 调度到与云盘相同的可用区。

具体配置为在 yaml 中对 pod 添加 nodeSelector,示例如下:
nodeSelector:
        failure-domain.beta.kubernetes.io/zone: cn-hangzhou-b

通过 PV/PVC 使用

  1. 创建云盘类型的 PV
    您可以使用 yaml 文件或者控制台界面创建云盘类型的 PV。
    • 通过 yaml 文件创建 PV
      使用 disk-pv.yaml 文件创建 PV。
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: d-bp1j17ifxfasvts3****
        labels:
          failure-domain.beta.kubernetes.io/zone: cn-hangzhou-b
          failure-domain.beta.kubernetes.io/region: cn-hangzhou
      spec:
        capacity:
          storage: 20Gi
        storageClassName: disk
        accessModes:
          - ReadWriteOnce
        flexVolume:
          driver: "alicloud/disk"
          fsType: "ext4"
          options:
            volumeId: "d-bp1j17ifxfasvts3****"
      说明 pv的名称(name)要与阿里云盘 ID (volumeId)的取值保持一致。
    • 通过控制台界面创建云盘数据卷
      1. 登录容器服务管理控制台
      2. 在 Kubernetes 菜单下,单击左侧导航栏中的集群 > 存储卷,进入存储与存储声明页面。
      3. 存储卷页签,选择所需的集群,单击创建

        创建云盘存储卷
      4. 在创建数据卷对话框中,配置数据卷的相关参数。
        • 存储卷类型:本示例中为云盘
        • 访问模式:默认为 ReadWriteOnce。
        • 云盘 ID:您可以选择与集群属于相同地域和可用区下处于待挂载状态的云盘。
        • 文件系统类型:您可以选择以什么数据类型将数据存储到云盘上,支持的类型包括 ext4、ext3、xfs、vfat。默认为 ext4。
        • 标签:为该数据卷添加标签。

        配置存储卷
      5. 完成配置后,单击创建
  2. 创建 PVC
    使用 disk-pvc.yaml 文件创建 PVC。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-disk
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: disk
      resources:
        requests:
          storage: 20Gi
  3. 创建 Pod
    使用disk-pod.yaml文件创建 pod。
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1beta2
    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: pvc-disk