使用 Azure 檔案共用區

Azure 中的 GKE 支援掛接 Azure 檔案共用資料夾。如果您已有要搭配 GKE on Azure 使用的 Azure 檔案共用,可以建立 PersistentVolume (PV) 物件,並為特定 PersistentVolumeClaim (PVC) 保留該物件。

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

事前準備

儲存 Azure 儲存體帳戶資訊

GKE on Azure 會將存取 Azure 儲存體帳戶的資訊儲存在 Secret 中。如果叢集尚未建立 Secret,請務必新增一個。 如果叢集中已有這個密鑰,請跳至「為現有共用項目建立 PersistentVolume」。

  1. 如要建立 Secret,請將下列資訊清單複製到名為「azure-service-account-key.yaml」的檔案。

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    更改下列內容:

    • STORAGE_ACCOUNT_NAME:您的 Azure 儲存體帳戶名稱
    • STORAGE_ACCOUNT_KEY:您的 Azure 儲存體帳戶金鑰
  2. 使用 kubectl 工具將檔案套用至叢集:

    kubectl apply -f azure-service-account-key.yaml
    

為現有共用項目建立 PersistentVolume

您可以在叢集中指定新的 PV,匯入現有的 Azure 檔案共用區。如要建立 PV,請按照下列步驟操作:

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

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    更改下列內容:

    • VOLUME_NAME:磁碟區名稱
    • VOLUME_CAPACITY:磁碟區大小。例如:30Gi。如要進一步瞭解如何在 Kubernetes 中指定磁碟區容量,請參閱「記憶體的意義」。
    • VOLUME_ID:冊次的專屬 ID,格式為字串 的 RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# 其中
    • FILE_SHARE_NAME:Azure 檔案共用名稱

    如果儲存空間帳戶與叢集位於不同的資源群組,您必須新增對包含儲存空間帳戶金鑰的 Secret 的參照。如要新增參照,請在 spec.csi 區段中插入下列內容:

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    更改下列內容:

    • NODE_STAGE_SECRET_NAME:密鑰名稱
    • NODE_STAGE_SECRET_NAMESPACE 包含 Secret 的命名空間
  2. 將 YAML 套用至叢集。

    kubectl apply -f existing-volume.yaml
    
  3. kubectl describe pv 確認 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
    
  4. 如要刪除 Pod,請使用 kubectl delete 指令。

    kubectl delete -f nginx.yaml
    

後續步驟