全部產品
Search
文件中心

Container Service for Kubernetes:使用雲端硬碟靜態儲存卷

更新時間:Jan 15, 2025

本文介紹如何通過PV和PVC方式使用阿里雲雲端硬碟儲存卷。

前提條件

使用雲端硬碟資料卷之前,您需要先在ECS管理主控台上建立雲端硬碟。具體操作,請參見建立空資料盤

通過PV和PVC方式使用雲端硬碟儲存卷

  1. 建立雲端硬碟類型的PV。

    您可以使用YAML檔案或者控制台建立雲端硬碟類型的PV。

    • 通過YAML檔案建立PV。

      1. 使用以下內容建立disk-pv.yaml檔案。

        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)的取值保持一致。

      2. 執行以下命令建立PV。

        kubectl apply -f disk-pv.yaml
    • 通過控制台介面建立雲端硬碟資料卷 。

      1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

      2. 叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情

      3. 在叢集管理頁左側導覽列中,選擇儲存 > 儲存卷

      4. 儲存卷頁面,單擊右上方的建立

      5. 建立儲存卷對話方塊中,配置資料卷的相關參數。

        配置項

        描述

        儲存卷類型

        本樣本選擇雲端硬碟

        儲存驅動

        本樣本選擇Flexvolume

        訪問模式

        預設為ReadWriteOnce。

        雲端硬碟ID

        您可以選擇與叢集屬於相同地區和可用性區域下處於待掛載狀態的雲端硬碟。

        檔案系統類型

        您可以選擇以哪種資料類型將資料存放區到雲端硬碟上,支援的類型包括ext4ext3xfsvfat。預設為ext4

        標籤

        為該資料卷添加標籤。

      6. 完成配置後,單擊建立

  2. 建立PVC。

    1. 使用以下內容建立disk-pvc.yaml檔案。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pvc-disk
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: disk
        resources:
          requests:
            storage: 20Gi
    2. 執行以下命令建立PVC。

      kubectl apply -f disk-pvc.yaml
  3. 建立Pod。

    1. 使用以下內容建立disk-pod.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: pvc-disk
    2. 執行以下命令建立Pod。

      kubectl apply -f disk-pod.yaml