Ü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:
- GKE on AWS-Cluster erstellen und den Zugriff darauf mit
kubectl
konfigurieren. - Verbindung zum Cluster herstellen und authentifizieren
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:
Suchen Sie den Namen der Rolle der Steuerungsebene Ihres Clusters.
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.
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
.
Wenden Sie die YAML-Datei auf den Cluster an.
kubectl apply -f existing-volume.yaml
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.
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
.
Wenden Sie die YAML-Datei auf den Cluster an.
kubectl apply -f nginx.yaml
Prüfen Sie den Status der Nginx-Instanz mit
kubectl describe
. In der Ausgabe sollteRunning
alsSTATUS
enthalten sein.kubectl describe pod web-server
Nächste Schritte
- Zusätzliche Speichertreiber mit GKE on AWS verwenden.