使用 Azure 檔案共用區
Azure 中的 GKE 支援掛接 Azure 檔案共用。如果您已有要搭配 GKE on Azure 使用的 Azure 檔案共用,可以建立 PersistentVolume (PV) 物件,並為特定 PersistentVolumeClaim (PVC) 保留該物件。
本頁面說明如何使用已填入資料的現有共用項目建立 PV,以及如何在 Pod 中使用 PV。
事前準備
- 連線至叢集
- 存取或建立 Azure 檔案共用區。詳情請參閱「建立 Azure 檔案共用區」。
儲存 Azure 儲存體帳戶資訊
GKE on Azure 會將存取 Azure 儲存體帳戶的資訊儲存在 Secret 中。如果叢集尚未建立 Secret,請務必新增一個。 如果叢集中已有這個密鑰,請跳至「為現有共用項目建立 PersistentVolume」。
如要建立 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 儲存體帳戶金鑰
使用
kubectl
工具將檔案套用至叢集:kubectl apply -f azure-service-account-key.yaml
為現有共用項目建立 PersistentVolume
您可以在叢集中指定新的 PV,匯入現有的 Azure 檔案共用區。如要建立 PV,請按照下列步驟操作:
將下列 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 的命名空間
將 YAML 套用至叢集。
kubectl apply -f existing-volume.yaml
向「
kubectl describe pv
」確認 PV 建立作業。kubectl describe pv VOLUME_NAME
這項指令的輸出內容會包含 PV 的狀態。
使用 PersistentVolumeClaim 和 Pod 存取磁碟區
匯入磁碟區後,您可以建立 PVC 和 Pod,並掛接 PVC。
下列 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
。
- STORAGE_CLASS:您先前建立的 PersistentVolume 中的 StorageClass 名稱。例如:
將 YAML 套用至叢集。
kubectl apply -f nginx.yaml
使用
kubectl describe
檢查 Nginx 執行個體的狀態。輸出內容應包含STATUS
為Running
的項目。kubectl describe pod web-server
如要刪除 Pod,請使用
kubectl delete
指令。kubectl delete -f nginx.yaml
後續步驟
- 在 Azure 上的 GKE 中使用額外的儲存空間驅動程式。
- 參閱 Azure File CSI 驅動程式說明文件。