總覽
如果您已有要匯入 GKE on AWS 的 AWS Elastic Block Store (EBS) 磁碟區,可以建立 PersistentVolume (PV) 物件,並為特定 PersistentVolumeClaim (PVC) 保留該物件。
本頁面說明如何使用已填入資料的現有 EBS 磁碟區建立 PV,以及如何在 Pod 中使用 PV。本頁內容適用於想要設定及管理儲存空間的作業人員和儲存空間專家。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。
事前準備
完成這些步驟前,請務必先完成下列事項:
- 建立 GKE on AWS 叢集,並使用
kubectl
設定叢集的存取權。 - 連結及驗證叢集
使用加密的 EBS 磁碟區
如果 EBS 磁碟區是透過 AWS Key Management Service (KMS) 加密,您需要授予 GKE on AWS 控制層 AWS IAM 角色 KMS 金鑰的存取權。
如要授予控制層角色金鑰存取權,請按照下列步驟操作:
找出叢集控制層角色的名稱。
選擇用於加密 EBS 磁碟區的 AWS KMS 金鑰,然後按照「允許金鑰使用者使用 KMS 金鑰」一文中的操作說明,將控制平面角色新增為金鑰使用者。
為現有的 EBS 磁碟區建立 PersistentVolume
您可以指定新的 PV,並將其新增至叢集,藉此匯入現有的 EBS 磁碟區。
將下列 YAML 複製到名為
existing-volume.yaml
的檔案中:apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: VOLUME_CAPACITY accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: STORAGE_CLASS_NAME claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: EBS_VOLUME_ID fsType: FILE_SYSTEM_TYPE nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - ZONE
Replace the following:
將 YAML 套用至叢集
kubectl apply -f existing-volume.yaml
確認建立 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: - ReadWriteOnce 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: PVC_NAME
更改下列內容:
STORAGE_CLASS
:先前建立的 PersistentVolume 中的 StorageClass 名稱,例如standard-rwo
。VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
:PVC 名稱,例如my-pvc
。
將 YAML 套用至叢集
kubectl apply -f nginx.yaml
使用
kubectl describe
檢查 Nginx 執行個體的狀態。輸出內容應包含STATUS
為Running
的項目。kubectl describe pod web-server
後續步驟
- 在 GKE on AWS 中使用額外的儲存空間驅動程式。