Importazione di un volume EBS esistente

Panoramica

Se hai già un volume Elastic Block Store (EBS) AWS 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. Questa pagina è rivolta a operatori e specialisti dello spazio di archiviazione che vogliono configurare e gestire lo spazio di archiviazione. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta la pagina Ruoli e attività comuni degli utenti GKE.

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 al ruolo IAM AWS del piano di controllo GKE su AWS l'accesso alla chiave KMS.

Per concedere l'accesso al ruolo del control plane alla tua chiave:

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

  2. Scegli la chiave KMS di AWS utilizzata per criptare il volume EBS e aggiungi il ruolo del piano di controllo come utente della chiave seguendo le istruzioni riportate in Consentire agli utenti della chiave di utilizzare la chiave KMS.

Creazione di un PersistentVolume per un volume EBS preesistente

Puoi importare un volume EBS esistente specificando un nuovo PV e aggiungendolo al tuo 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 maggiori informazioni su come specificare la capacità del volume in Kubernetes, consulta la sezione Significato di memoria.
    • STORAGE_CLASS_NAME: il nome di 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 file YAML al cluster

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

  1. 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:

    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 di StorageClass da PersistentVolume che hai creato in precedenza, ad esempio standard-rwo.
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: il nome del PVC, ad esempio my-pvc.
  2. Applica il file YAML al cluster

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

    kubectl describe pod web-server
    

Passaggi successivi