Implementare un'applicazione di esempio - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementare un'applicazione di esempio

È possibile testare la funzionalità del driver CSI con un'applicazione di esempio. In questo argomento viene illustrata una procedura, ma è anche possibile eseguire le operazioni seguenti:

  • Implementare un'applicazione di esempio che utilizza il dispositivo esterno di acquisizione snapshot per creare snapshot del volume. Per ulteriori informazioni, consulta Snapshot del volume su GitHub.

  • Implementare un'applicazione di esempio che utilizza il ridimensionamento del volume. Per ulteriori informazioni, consulta Ridimensionamento del volume su GitHub.

Questa procedura utilizza l'esempio di provisioning di volumi dinamici disponibile nel repository GitHub del driver Container Storage Interface (CSI) per Amazon EBS finalizzato all'uso di un volume Amazon EBS con provisioning dinamico.

  1. Clona il repository GitHub del driver Container Storage Interface (CSI) per Amazon EBS nel sistema locale.

    git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
  2. Passare alla directory di esempio dynamic-provisioning.

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. (Facoltativo) Per impostazione predefinita il file manifests/storageclass.yaml effettua il provisioning dei volumi Amazon EBS gp2. Per utilizzare invece i volumi gp3, aggiungi type: gp3 a manifests/storageclass.yaml.

    echo "parameters: type: gp3" >> manifests/storageclass.yaml
  4. Implementare la classe di storage ebs-sc, la dichiarazione di volume persistente ebs-claim e l'applicazione di esempio app dalla directory manifests.

    kubectl apply -f manifests/
  5. Descrivere la classe di storage ebs-sc.

    kubectl describe storageclass ebs-sc

    Di seguito viene riportato un output di esempio:

    Name:            ebs-sc
    IsDefaultClass:  No
    Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ebs-sc"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"}
    
    Provisioner:           ebs.csi.aws.com
    Parameters:            <none>
    AllowVolumeExpansion:  <unset>
    MountOptions:          <none>
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                <none>
    Nota

    La classe di storage utilizza la modalità di associazione di volumi WaitForFirstConsumer. Ciò significa che i volumi non vengono assegnati dinamicamente finché un Pod non effettua una dichiarazione di volume persistente. Per ulteriori informazioni, consulta la sezione Volume Binding Mode (Modalità di associazione dei volumi) nella documentazione Kubernetes.

  6. Controlla i Pods nello spazio dei nomi predefinito. Dopo pochi minuti, lo stato del pod Pod app cambia in Running.

    kubectl get pods --watch

    Inserire Ctrl+C per tornare a un prompt della shell.

  7. Elencare i volumi persistenti nello spazio dei nomi predefinito. Cercare un volume persistente con la richiesta default/ebs-claim.

    kubectl get pv

    Di seguito viene riportato un output di esempio:

    NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a 4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s
  8. Descrivere il volume persistente. Sostituisci pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a con il valore dell'output del passaggio precedente.

    kubectl describe pv pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a

    Di seguito viene riportato un output di esempio:

    Name:              pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a
    Labels:            <none>
    Annotations:       pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
    Finalizers:        [kubernetes.io/pv-protection external-attacher/ebs-csi-aws-com]
    StorageClass:      ebs-sc
    Status:            Bound
    Claim:             default/ebs-claim
    Reclaim Policy:    Delete
    Access Modes:      RWO
    VolumeMode:        Filesystem
    Capacity:          4Gi
    Node Affinity:
      Required Terms:
        Term 0:        topology.ebs.csi.aws.com/zone in [region-code]
    Message:
    Source:
        Type:              CSI (a Container Storage Interface (CSI) volume source)
        Driver:            ebs.csi.aws.com
        VolumeHandle:      vol-0d651e157c6d93445
        ReadOnly:          false
        VolumeAttributes:      storage.kubernetes.io/csiProvisionerIdentity=1567792483192-8081-ebs.csi.aws.com
    Events:                <none>

    L'ID volume Amazon EBS è il valore per VolumeHandle nell'output precedente.

  9. Verificare che il Pod scriva correttamente i dati nel volume.

    kubectl exec -it app -- cat /data/out.txt

    Di seguito viene riportato un output di esempio:

    Wed May 5 16:17:03 UTC 2021
    Wed May 5 16:17:08 UTC 2021
    Wed May 5 16:17:13 UTC 2021
    Wed May 5 16:17:18 UTC 2021
    [...]
  10. Al termine, eliminare le risorse per questa applicazione di esempio.

    kubectl delete -f manifests/