Vorhandenes EBS-Volume importieren

Übersicht

Wenn Sie bereits ein AWS-Elastic Block Store-Volume (EBS) zum Importieren in GKE on AWS haben, können Sie ein PersistentVolume-Objekt (PV) erstellen und dieses für einen bestimmten PersistentVolumeClaim (PVC) reservieren.

Auf dieser Seite wird erläutert, wie Sie mithilfe eines vorhandenen, mit Daten gefüllten EBS-Volumes ein PV erstellen und in einem Pod verwenden. Diese Seite richtet sich an Betreiber und Speicherspezialisten, die Speicher konfigurieren und verwalten möchten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.

Hinweise

Bevor Sie diese Schritte ausführen, müssen Sie:

Verschlüsselte EBS-Volumes verwenden

Wenn Ihr EBS-Volume mit dem AWS Key Management Service (KMS) verschlüsselt ist, müssen Sie der AWS IAM-Rolle der GKE on AWS-Steuerungsebene Zugriff auf Ihren KMS-Schlüssel gewähren.

So gewähren Sie der Steuerungsebenenrolle Zugriff auf Ihren Schlüssel:

  1. Suchen Sie den Namen der Rolle der Steuerungsebene Ihres Clusters.

  2. Wählen Sie den AWS-KMS-Schlüssel aus, der zum Verschlüsseln Ihres EBS-Volumes verwendet werden soll, und fügen Sie die Rolle der Steuerungsebene als Schlüsselnutzer hinzu. Folgen Sie dazu der Anleitung unter Schlüsselnutzer zum Verwenden des KMS-Schlüssels zulassen.

PersistentVolume für ein bereits vorhandenes EBS-Volume erstellen

Sie können ein vorhandenes EBS-Volume importieren, indem Sie ein neues PV angeben und Ihrem Cluster hinzufügen.

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen 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: Der Name Ihres Volumes.
    • VOLUME_CAPACITY: Größe des Volumes, z. B. 30G. Weitere Informationen zum Angeben der Volume-Kapazität in Kubernetes finden Sie unter Bedeutung des Arbeitsspeichers.
    • STORAGE_CLASS_NAME: Der Name der StorageClass, die das Volume bereitstellt, z. B. standard-rwo.

    • EBS_VOLUME_ID: Ihre EBS-Volume-ID. Beispiel: vol-05786ec9ec9526b67

    • FS_TYPE: Das Dateisystem des Volumes, z. B. ext4.

    • ZONE: Die AWS-Verfügbarkeitszone, die das EBS-Volume hostet, z. B. us-east-1c.

  2. Wenden Sie die YAML-Datei auf den Cluster an.

    kubectl apply -f existing-volume.yaml
    
  3. Bestätigen Sie, dass das PV erstellt wurde.

    kubectl describe pv volume-name
    

    Die Ausgabe dieses Befehls enthält den Status des PV.

Volume mit einem PersistentVolumeClaim und einem Pod verwenden

Nachdem Sie das Volume importiert haben, können Sie einen PVC und einen Pod erstellen, an den der PVC anhängt wird.

  1. Die folgende YAML-Datei erstellt einen PVC und hängt ihn an einen Pod an, auf dem der Nginx-Webserver ausgeführt wird. Kopieren Sie ihn in eine Datei mit dem Namen 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
    

    Dabei gilt:

    • STORAGE_CLASS: Der Name der StorageClass aus dem zuvor erstellten PersistentVolume, z. B. standard-rwo.
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: Name des PVC, z. B. my-pvc.
  2. Wenden Sie die YAML-Datei auf den Cluster an.

    kubectl apply -f nginx.yaml
    
  3. Prüfen Sie den Status der Nginx-Instanz mit kubectl describe. In der Ausgabe sollte Running als STATUS enthalten sein.

    kubectl describe pod web-server
    

Nächste Schritte