Übersicht
Wenn Sie bereits ein AWS Elastic Block Store-Volume (EBS) zum Importieren in Anthos-Cluster in 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.
Hinweis
- Verwenden Sie im Verzeichnis
anthos-aws
anthos-gke
, um den Kontext zu Ihrem Nutzercluster zu wechseln.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Ersetzen Sie CLUSTER_NAME durch den Nutzerclusternamen.
PersistentVolume für ein bereits vorhandenes EBS-Volume erstellen
Sie können ein vorhandenes EBS-Volume durch Angabe eines neuen PV importieren.
Kopieren Sie die folgende YAML-Datei in eine Datei mit dem Namen
existing-volume.yaml
und vervollständigen Sie die Konfiguration. Ersetzen Sie dabei die folgenden Werte:- volume-capacity: Größe des Volumes. Beispiel:
30Gi
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. Sie können beispielsweise den Standardwert
standard-rwo
verwenden.ebs-id: EBS-Volume-ID. Beispiel:
vol-05786ec9ec9526b67
.fs-type: Das Dateisystem des Volumes. Beispiel:
ext4
.zone: AWS-Verfügbarkeitszone, die das EBS-Volume hostet. Beispiel:
us-east-1c
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
- volume-capacity: Größe des Volumes. Beispiel:
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 die Datei in eine Datei mit dem Namen nginx.yaml
und vervollständigen Sie die Konfiguration. Ersetzen Sie dabei die folgenden Werte:
- storage-class: Der Name der StorageClass aus dem zuvor erstellten PersistentVolume. Beispiel:
standard-rwo
- volume-name: Der Name des zuvor erstellten Volumes.
- volume-capacity: Größe des Volumes. Beispiel:
30Gi
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: 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
Verschlüsselte EBS-Volumes verwenden
Wenn Ihr EBS-Volume mit dem AWS Key Management Service (KMS) verschlüsselt ist, müssen Sie den Anthos-Clustern der AWS-Steuerungsebene Zugriff auf Ihren KMS-Schlüssel gewähren.
Führen Sie die folgenden Schritte aus, um den Namen der AWS IAM-Rolle abzurufen:
Wechseln Sie in das Verzeichnis mit Ihren Anthos-Clustern in der AWS-Konfiguration. Sie haben dieses Verzeichnis bei der Installation des Verwaltungsdienstes erstellt.
cd anthos-aws
Wählen Sie aus, ob Sie Ihre Anthos-Cluster in der AWS-Umgebung mit dem
anthos-gke
-Tool oder manuell erstellt haben.Anthos-gke-Tool
Verwenden Sie den Befehl
terraform output
und suchen Sie nach dem Wert voniamInstanceProfile
.terraform output | grep iamInstanceProfile
Wenn Sie Ihre Anthos-Cluster in der AWS-Umgebung mit dem
anthos- gke
-Tool erstellt haben, sieht die Ausgabe so aus:iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
Dabei ist CLUSTER_ID die ID Ihres Clusters. Kopieren Sie den Wert von
gke-CLUSTER_ID-controlplane
für den folgenden Schritt.Manuell erstellt
Sehen Sie sich die Ausgabe von
terraform output
mit dem folgenden Befehl an:terraform output | less
Scrollen Sie durch die Ausgabe und suchen Sie nach der Instanz "iamInstanceProfile" nach der AWSCluster-Definition.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
Kopieren Sie den Wert von
INSTANCE_PROFILE_NAME
für den folgenden Schritt.Um der Steuerungsebene Zugriff auf Ihre EBS-Volumes zu gewähren, fügen Sie dem AWS KMS-Schlüssel, der zum Verschlüsseln EBS-Volume verwendet wird, das AWS-IAM-Profil
gke-xxxxxx-controlplane
als Schlüsselnutzer hinzu.
Weitere Informationen
- Zusätzliche Speichertreiber mit Anthos-Clustern in AWS verwenden.