匯入現有的 Azure 磁碟區

如果您已有要搭配 GKE on Azure 使用的 Azure 磁碟磁碟區,可以建立 PersistentVolume (PV) 物件,並為特定 PersistentVolumeClaim (PVC) 保留該物件。

本頁面說明如何使用已填入資料的現有磁碟區建立 PV,以及如何在 Pod 中使用 PV。

事前準備

為預先存在的磁碟區建立 PersistentVolume

您可以指定新的 PV,匯入現有磁碟區。

  1. 將下列 YAML 複製到名為 existing-volume.yaml 的檔案:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/microsoft.compute/disks/DISK_NAME
        fsType: FILE_SYSTEM_TYPE
    

    更改下列內容:

    • VOLUME_NAME:磁碟區名稱
    • VOLUME_CAPACITY:磁碟區大小。例如:30Gi。如要進一步瞭解如何在 Kubernetes 中指定磁碟區容量,請參閱「記憶體的意義」。
    • STORAGE_CLASS_NAME:用於佈建磁碟區的 StorageClass 名稱。舉例來說,您可以使用預設的 standard-rwo

    • SUBSCRIPTION_ID:包含磁碟區的 Azure 訂閱 ID。

    • RESOURCE_GROUP_NAME:包含磁碟區的 Azure 資源群組。

    • DISK_NAME:磁碟區的 Azure 磁碟名稱。

    • FS_TYPE:磁碟區的檔案系統類型。例如:ext4

  2. 將 YAML 套用至叢集

    kubectl apply -f existing-volume.yaml
    
  3. 確認建立 PV

    kubectl describe pv VOLUME_NAME
    

    這項指令的輸出內容會包含 PV 的狀態。

使用 PersistentVolumeClaim 和 Pod 存取磁碟區

匯入磁碟區後,您可以建立 PVC 和 Pod,並掛接 PVC。

  1. 下列 YAML 會建立 PVC,並將其附加至執行 Nginx 網路伺服器的 Pod。將其複製到名為 nginx.yaml 的檔案:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ACCESS_MODE
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: my-pvc
    

    更改下列內容:

    • STORAGE_CLASS:您先前建立的 PersistentVolume 中的 StorageClass 名稱。例如:standard-rwo
    • ACCESS_MODE:磁碟區的存取模式。如果是 Azure 磁碟,請使用 ReadWriteOnce。如果是 Azure 檔案,請使用 ReadWriteMany
    • VOLUME_CAPACITY:磁碟區大小。例如:30Gi
  2. 將 YAML 套用至叢集

    kubectl apply -f nginx.yaml
    
  3. 使用 kubectl describe 檢查 Nginx 執行個體的狀態。輸出內容應為 STATUSRunning

    kubectl describe pod web-server
    

後續步驟