Panoramica
Se hai già un Elastic Block Store (EBS) AWS
da importare in GKE su AWS, puoi creare un oggetto PersistentVolume (PV) e prenotarlo per uno specifico PersistentVolumeClaim (PVC).
Questa pagina spiega come creare un volume permanente mediante un volume EBS esistente completato con i dati e come utilizzarlo in un pod.
Prima di iniziare
Prima di completare questi passaggi, devi:
- Crea un cluster GKE su AWS e configura l'accesso con
kubectl
. - Connettiti e autentica nel tuo cluster
Utilizzo di volumi EBS criptati
Se il volume EBS è criptato con AWS Key Management Service (KMS), devi concedere alla chiave KMS l'accesso al ruolo AWS IAM di GKE sul piano di controllo AWS.
Per concedere al ruolo del piano di controllo l'accesso alla tua chiave:
Trova il nome del ruolo del piano di controllo del cluster.
Scegli la chiave KMS AWS utilizzata per criptare il volume EBS e aggiungi il ruolo del piano di controllo come utente chiave seguendo le istruzioni riportate in Consentire agli utenti delle chiavi di utilizzare la chiave KMS.
Creazione di un PersistentVolume per un volume EBS preesistente
Puoi importare un volume EBS esistente specificando un nuovo volume permanente e aggiungendolo al cluster.
Copia il seguente codice YAML in un file denominato
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:
VOLUME_NAME
: il nome del volume.VOLUME_CAPACITY
: dimensione del volume, ad esempio30G
. Per ulteriori informazioni su come specificare la capacità di volume in Kubernetes, consulta il Significato della memoria.STORAGE_CLASS_NAME
: il nome dell'oggetto StorageClass che esegue il provisioning del volume, ad esempiostandard-rwo
.EBS_VOLUME_ID
: il tuo ID volume EBS. Ad esempio:vol-05786ec9ec9526b67
.FS_TYPE
: il file system del volume, ad esempioext4
.ZONE
: la zona di disponibilità AWS che ospita il volume EBS, ad esempious-east-1c
.
Applica il codice YAML al tuo cluster
kubectl apply -f existing-volume.yaml
Conferma la creazione del volume permanente
kubectl describe pv volume-name
L'output di questo comando contiene lo stato dell'oggetto PV.
Utilizzo del volume con un PersistentVolumeClaim e un pod
Dopo aver importato il volume, puoi creare una PVC e un pod a cui collega la PVC.
Il codice YAML di seguito crea una PVC e la collega a un pod che esegue il server web Nginx. Copialo in un file denominato
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
Sostituisci quanto segue:
STORAGE_CLASS
: il nome dell'oggetto StorageClass del PersistentVolume creato in precedenza, ad esempiostandard-rwo
.VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
: nome della PVC, ad esempiomy-pvc
.
Applica il codice YAML al tuo cluster
kubectl apply -f nginx.yaml
Controlla lo stato dell'istanza Nginx con
kubectl describe
. L'output deve avere un valoreSTATUS
pari aRunning
.kubectl describe pod web-server
Passaggi successivi
- Utilizza driver di archiviazione aggiuntivi con GKE su AWS.