Importazione di un volume EBS esistente

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:

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:

  1. Trova il nome del ruolo del piano di controllo del cluster.

  2. 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.

  1. 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 esempio 30G. 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 esempio standard-rwo.

    • EBS_VOLUME_ID: il tuo 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.

  2. Applica il codice YAML al tuo cluster

    kubectl apply -f existing-volume.yaml
    
  3. 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.

  1. 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 esempio standard-rwo.
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: nome della PVC, ad esempio my-pvc.
  2. Applica il codice YAML al tuo cluster

    kubectl apply -f nginx.yaml
    
  3. Controlla lo stato dell'istanza Nginx con kubectl describe. L'output deve avere un valore STATUS pari a Running.

    kubectl describe pod web-server
    

Passaggi successivi