Panoramica
Se hai già un volume AWS Elastic Block Store (EBS) da importare in GKE su AWS, puoi creare un oggetto PersistentVolume (PV) e riservarlo per una specifica PersistentVolumeClaim (PVC).
Questa pagina spiega come creare un PV utilizzando un volume EBS esistente compilato con i dati e come utilizzare il PV in un pod.
Prima di iniziare
- Dalla directory anthos-aws, utilizzaanthos-gkeper passare al contesto del cluster utente.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME 
Creazione di un PersistentVolume per un volume EBS preesistente
Puoi importare un volume EBS esistente specificando un nuovo PV.
- Copia il seguente codice YAML in un file denominato - existing-volume.yamle completa la configurazione sostituendo i valori:- volume-capacity: la dimensione del volume. Ad esempio, 30Gi. Per saperne di più su come specificare la capacità del volume in Kubernetes, consulta la sezione Significato di memoria.
- storage-class-name: il nome di StorageClass che provisiona il volume. Ad esempio, puoi utilizzare - standard-rwopredefinito.
- ebs-id: l'ID volume EBS. Ad esempio: - vol-05786ec9ec9526b67.
- fs-type: il file system del volume. Ad esempio: - ext4.
- zone: la zona di disponibilità AWS che ospita il volume EBS. Ad esempio, - us-east-1c.
 - 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
- volume-capacity: la dimensione del volume. Ad esempio, 
- Applica il file YAML al cluster - kubectl apply -f existing-volume.yaml
- Conferma la creazione della PV - kubectl describe pv volume-name- L'output di questo comando contiene lo stato del PV. 
Utilizzo del volume con un oggetto PersistentVolumeClaim e un pod
Dopo aver importato il volume, puoi creare un PVC e un pod che collega il PVC.
Il codice YAML riportato di seguito crea un PVC e lo collega a un pod che esegue il server web Nginx. Copialo in un file denominato nginx.yaml e completa la configurazione
sostituendo i valori:
- storage-class: il nome di StorageClass dal PersistentVolume creato in precedenza. Ad esempio,
standard-rwo.
- volume-name: il nome del volume creato in precedenza.
- volume-capacity: la dimensione del volume. Ad esempio, 30Gi.
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: my-pvc
- Applica il file YAML al cluster - kubectl apply -f nginx.yaml
- Controlla lo stato dell'istanza Nginx con - kubectl describe. L'output deve avere un- STATUSdi- Running.- kubectl describe pod web-server
Utilizzo di volumi EBS criptati
Se il volume EBS è criptato con AWS Key Management Service (KMS), devi concedere al ruolo IAM AWS del piano di controllo GKE su AWS l'accesso alla chiave KMS.
Per ottenere il nome del ruolo AWS IAM, segui questi passaggi:
- Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante l'installazione del servizio di gestione. - cd anthos-aws 
- Scegli se hai creato l'ambiente GKE su AWS con lo strumento - anthos-gkeo se hai creato manualmente i profili AWS IAM.- Strumento anthos-gke- Utilizza il comando - terraform outpute cerca il valore di- iamInstanceProfile.- terraform output | grep iamInstanceProfile- Se hai creato l'ambiente GKE su AWS con lo strumento - anthos- gke, l'output è simile al seguente:- iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool- Dove CLUSTER_ID è l'ID del cluster. Copia il valore di - gke-CLUSTER_ID-controlplaneper il passaggio successivo.- Creato manualmente- Esamina l'output di - terraform outputcon questo comando:- terraform output | less- Scorri l'output e trova iamInstanceProfile dopo la definizione di AWSCluster. - kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME- Copia il valore di - INSTANCE_PROFILE_NAMEper il passaggio successivo.
- Per concedere al control plane l'accesso ai tuoi volumi EBS, aggiungi il profilo IAM AWS - gke-xxxxxx-controlplanecome utente chiave alla chiave KMS di AWS utilizzata per criptare il volume EBS.
Passaggi successivi
- Utilizza driver di archiviazione aggiuntivi con GKE su AWS.