Bereitstellen einer Beispielanwendung bereit und Überprüfung, ob der CSI-Treiber funktioniert - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen einer Beispielanwendung bereit und Überprüfung, ob der CSI-Treiber funktioniert

Sie können die CSI-Treiberfunktionalität mit einer Beispielanwendung testen. Dieses Thema zeigt ein Beispiel, Sie können jedoch auch Folgendes durchführen:

  • Stellen Sie eine Beispielanwendung bereit, die Volume-Snapshots mit dem externen Snapshotter verwendet. Weitere Informationen finden Sie unter Volume Snapshots (Volume-Snapshots) auf GitHub.

  • Stellen Sie eine Beispielanwendung bereit, die die Volume-Größenänderung verwendet. Weitere Informationen finden Sie unter Volume Resizing (Volume-Größenänderung) auf GitHub.

In diesem Verfahren wird das Beispiel Dynamische Volume-Bereitstellung aus dem GitHub-Repository Amazon-EBS-Container-Storage-Interface-Treiber (CSI) verwendet, um ein dynamisch bereitgestelltes Amazon-EBS-Volume zu verwenden.

  1. Klonen Sie das GitHub-Repository Amazon-EBS-Container-Storage-Interface-Treiber (CSI) auf Ihr lokales System.

    git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
  2. Navigieren Sie zum dynamic-provisioning-Beispielverzeichnis.

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. (Optional) Die Datei manifests/storageclass.yaml stellt standardmäßig gp2-Volumes von Amazon EBS bereit. Um stattdessen gp3-Volumes zu verwenden, fügen Sie type: gp3 zu manifests/storageclass.yaml hinzu.

    echo "parameters: type: gp3" >> manifests/storageclass.yaml
  4. Stellen Sie die Speicherklasse ebs-sc, den persistenten Volume-Anspruch ebs-claim und die Beispielanwendung app aus dem manifests-Verzeichnis bereit.

    kubectl apply -f manifests/
  5. Beschreiben Sie die ebs-sc-Speicherklasse.

    kubectl describe storageclass ebs-sc

    Eine Beispielausgabe sieht wie folgt aus.

    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>
    Anmerkung

    Die Speicherklasse verwendet den WaitForFirstConsumer-Volume-Bindungsmodus. Das bedeutet, dass Volumes erst dann dynamisch bereitgestellt werden, wenn ein Pod einen persistenten Volume-Anspruch stellt. Weitere Informationen finden Sie unter Volume-Bindungsmodus in der Kubernetes-Dokumentation.

  6. Beobachten Sie die Pods im Standard-Namespace. Nach einigen Minuten ändert sich der Status des app-Pod in Running.

    kubectl get pods --watch

    Geben Sie Ctrl+C ein, um zu einer Shell-Eingabeaufforderung zurückzukehren.

  7. Listen Sie die persistenten Volumes im Standard-Namespace auf. Suchen Sie nach einem persistenten Volume mit dem default/ebs-claim-Anspruch.

    kubectl get pv

    Eine Beispielausgabe sieht wie folgt aus.

    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. Beschreiben Sie das persistente Volume. Ersetzen Sie pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a durch den Wert aus der Ausgabe im vorherigen Schritt.

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

    Eine Beispielausgabe sieht wie folgt aus.

    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>

    Die Amazon EBS-Volume-ID ist der Wert für VolumeHandle in der vorherigen Ausgabe.

  9. Überprüfen Sie, ob der Pod Daten auf das Volume schreibt.

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

    Eine Beispielausgabe sieht wie folgt aus.

    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. Wenn Sie fertig sind, löschen Sie die Ressourcen für diese Beispielanwendung.

    kubectl delete -f manifests/