Der CSI-Treiber für Persistent Disk von Compute Engine ist die primäre Methode für den Zugriff auf Hyperdisk-Speicher mit GKE-Clustern (Google Kubernetes Engine).
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit
gcloud components update
ab.
- Legen Sie für Ihre Standardregion und -zone einen der unterstützten Werte fest.
Voraussetzungen
Für die Verwendung von Hyperdisk-Volumes in GKE müssen Ihre Cluster die folgenden Anforderungen erfüllen:
- Verwenden Sie Linux-Cluster mit GKE-Version 1.26 oder höher. Wenn Sie eine Release-Version verwenden, achten Sie darauf, dass der Kanal die GKE-Mindestversion oder höher hat, die für diesen Treiber erforderlich ist.
- Achten Sie darauf, dass der CSI-Treiber für Persistent Disk von Compute Engine aktiviert ist. Der Treiber für Persistent Disk von Compute Engine ist in neuen Autopilot- und Standardclustern standardmäßig aktiviert und kann bei Verwendung von Autopilot nicht deaktiviert oder bearbeitet werden. Wenn Sie den CSI-Treiber für Persistent Disk von Compute Engine in Ihrem Cluster aktivieren müssen, lesen Sie den Abschnitt CSI-Treiber für Persistent Disk von Compute Engine auf einem vorhandenen Cluster aktivieren.
Hyperdisk-Volume für GKE erstellen
Dieser Abschnitt bietet einen Überblick über die Erstellung eines Hyperdisk-Volumes, das vom Compute Engine-CSI-Treiber in GKE unterstützt wird.
StorageClass erstellen
Die folgenden Type
-Felder für Persistent Disk-Speicher werden vom CSI-Treiber für Persistent Disk von Compute Engine bereitgestellt, um Hyperdisk zu unterstützen:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
Verwenden Sie zum Erstellen einer neuen StorageClass mit dem gewünschten Durchsatz oder der IOPS-Stufe das pd.csi.storage.gke.io
im Feld "Bereitsteller" und geben Sie einen der Hyperdisk-Speichertypen an.
Jeder Hyperdisk-Typ hat Standardwerte für die Leistung, die durch die bereitgestellte anfängliche Laufwerkgröße bestimmt werden. Beim Erstellen der StorageClass können Sie je nach Hyperdisk-Typ optional die folgenden Parameter angeben. Wenn Sie diese Parameter weglassen, verwendet GKE stattdessen die kapazitätsbasierten Standardeinstellungen für Laufwerkstypen.
Parameter | Hyperdisk-Typ | Nutzung |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced, Hyperdisk Throughput | Geben Sie den Durchsatzwert mit dem Qualifier "Mi" in MiB/s an. Wenn der erforderliche Durchsatz beispielsweise 250 MiB/s beträgt, geben Sie beim Erstellen der StorageClass "250Mi" an. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk IOPS | Der IOPS-Wert sollte ohne Qualifier ausgedrückt werden. Wenn Sie beispielsweise 7.000 IOPS benötigen, geben Sie beim Erstellen der StorageClass "7000" an. |
Informationen zu zulässigen Werten für Durchsatz oder IOPS finden Sie unter Leistungsniveau für Ihr Hyperdisk-Volume planen.
Die folgenden Beispiele zeigen, wie Sie eine StorageClass für jeden Hyperdisk-Typ erstellen können:
Hyperdisk Balanced
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
hdb-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000"
StorageClass erstellen:
kubectl create -f hdb-example-class.yaml
Hyperdisk Durchsatz
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
hdt-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: throughput-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-throughput provisioned-throughput-on-create: "50Mi"
StorageClass erstellen:
kubectl create -f hdt-example-class.yaml
Hyperdisk Extrem
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
hdx-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: extreme-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-extreme provisioned-iops-on-create: "50000"
StorageClass erstellen:
kubectl create -f hdx-example-class.yaml
Führen Sie den folgenden Befehl aus, um den Namen der in Ihrem Cluster verfügbaren StorageClasses zu ermitteln:
kubectl get sc
PersistentVolumeClaim erstellen
Sie können einen PersistentVolumeClaim erstellen, der auf die StorageClass des CSI-Treibers für Persistent Disk von Compute Engine verweist.
Hyperdisk Balanced
In diesem Beispiel geben Sie die Zielspeicherkapazität des Hyperdisk Balanced-Volumes als 20 GiB an.
Speichern Sie das folgende PersistentVolumeClaim-Manifest in einer Datei mit dem Namen
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-storage resources: requests: storage: 20Gi
Wenden Sie den PersistentVolumeClaim an, der auf die StorageClass verweist, die Sie im vorherigen Beispiel erstellt haben:
kubectl apply -f pvc-example.yaml
Hyperdisk Durchsatz
In diesem Beispiel geben Sie die Zielspeicherkapazität des Hyperdisk Throughput-Volumes als 2 TiB an.
Speichern Sie das folgende PersistentVolumeClaim-Manifest in einer Datei mit dem Namen
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: throughput-storage resources: requests: storage: 2Ti
Wenden Sie den PersistentVolumeClaim an, der auf die StorageClass verweist, die Sie im vorherigen Beispiel erstellt haben:
kubectl apply -f pvc-example.yaml
Hyperdisk Extrem
In diesem Beispiel geben Sie die Mindestspeicherkapazität des Hyperdisk Extreme-Volumes als 64 GiB an.
Speichern Sie das folgende PersistentVolumeClaim-Manifest in einer Datei mit dem Namen
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: extreme-storage resources: requests: storage: 64Gi
Wenden Sie den PersistentVolumeClaim an, der auf die StorageClass verweist, die Sie im vorherigen Beispiel erstellt haben:
kubectl apply -f pvc-example.yaml
Deployment zur Nutzung des Hyperdisk-Volumes erstellen
Bei der Verwendung von Pods mit PersistentVolumes empfehlen wir die Verwendung eines Workload-Controllers (z. B. Deployment oder StatefulSet).
Im folgenden Beispiel wird ein Manifest erstellt, das einen Pod zur Bereitstellung eines Nginx-Webservers mit dem im vorherigen Abschnitt erstellten PersistentVolumeClaim konfiguriert. Speichern Sie das folgende Beispielmanifest als
hyperdisk-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /var/lib/www/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc readOnly: false
Führen Sie den folgenden Befehl aus, um ein Deployment anhand der Manifestdatei
hyperdisk-example-deployment.yaml
zu erstellen:kubectl apply -f hyperdisk-example-deployment.yaml
Prüfen Sie, ob das Deployment erfolgreich erstellt wurde:
kubectl get deployment
Es kann einige Minuten dauern, bis Hyperdisk-Instanzen die Bereitstellung abgeschlossen haben. Wenn die Bereitstellung abgeschlossen ist, meldet sie den Status
READY
.Um den Fortschritt zu prüfen, können Sie den PVC-Status mit folgendem Befehl beobachten:
kubectl get pvc
Hyperdisk-Volume aus einem Snapshot bereitstellen
Verwenden Sie zum Erstellen eines neuen Hyperdisk-Volumes aus einem vorhandenen Persistent Disk-Snapshots die Google Cloud Console, die Google Cloud CLI oder die Compute Engine API. Informationen zum Erstellen eines Persistent Disk-Snapshots finden Sie unter Volume-Snapshots erstellen und verwenden.
Console
Rufen Sie in der Google Cloud Console die Seite Laufwerke auf.
Klicken Sie auf Laufwerk erstellen.
Wählen Sie unter Laufwerkseinstellungen eine der folgenden Optionen für den Laufwerkstyp aus:
- Hyperdisk abgestimmt
- Hyperdisk Extrem
- Hyperdisk Durchsatz
Klicken Sie unter Laufwerkquelltyp auf Snapshot.
Wählen Sie den Namen des wiederherzustellenden Snapshots aus.
Wählen Sie die Größe des neuen Laufwerks in GiB aus. Diese Zahl muss größer oder gleich dem ursprünglichen Quelllaufwerk für den Snapshot sein.
Legen Sie den bereitgestellten Durchsatz oder Bereitgestellte IOPS für das Laufwerk fest, wenn sich dieser von den Standardwerten unterscheidet.
Klicken Sie auf Erstellen, um das Hyperdisk-Volume zu erstellen.
gcloud
Führen Sie den Befehl gcloud compute disks create
aus, um das Hyperdisk-Volume aus einem Snapshot zu erstellen.
Hyperdisk Balanced
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Ersetzen Sie Folgendes:
DISK_NAME
: durch den Namen des neuen Laufwerks.SIZE
ist die Größe in Gibibyte (GiB) oder Tebibyte (TiB) für das neue Laufwerk. In der Compute Engine-Dokumentation finden Sie die aktuellen Kapazitätseinschränkungen.SNAPSHOT_NAME
: der Name des wiederherzustellenden Snapshots.THROUGHPUT_LIMIT
: Optional. Bei Hyperdisk Balanced-Laufwerken ist dies eine Ganzzahl, die den Durchsatz in MiB/s angibt, den das Laufwerk verarbeiten kann. Die aktuellen Beschränkungen finden Sie in der Compute Engine-Dokumentation.IOPS_LIMIT
: Optional. Bei Hyperdisk Balanced-Laufwerken ist dies die Anzahl der IOPS, die das Laufwerk verarbeiten kann. Informationen zu den aktuellen Leistungsbeschränkungen finden Sie in der Compute Engine-Dokumentation.
Hyperdisk Durchsatz
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Ersetzen Sie Folgendes:
DISK_NAME
: durch den Namen des neuen Laufwerks.SIZE
: die Größe in Gibibyte (GiB oder GB) oder Tebibyte (TiB oder TB) für das neue Laufwerk. In der Compute Engine-Dokumentation finden Sie die aktuellen Kapazitätseinschränkungen.SNAPSHOT_NAME
: der Name des wiederherzustellenden Snapshots.THROUGHPUT_LIMIT
: Optional: Bei Hyperdisk Througput-Laufwerken ist dies eine Ganzzahl, die den Durchsatz in MiB/s angibt, den das Laufwerk verarbeiten kann. Informationen zu den aktuellen Leistungsbeschränkungen finden Sie in der Compute Engine-Dokumentation.
Hyperdisk Extrem
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-iops
Ersetzen Sie Folgendes:
DISK_NAME
: durch den Namen des neuen Laufwerks.SIZE
: die Größe in Gibibyte (GiB oder GB) oder Tebibyte (TiB oder TB) für das neue Laufwerk. In der Compute Engine-Dokumentation finden Sie die aktuellen Kapazitätseinschränkungen.SNAPSHOT_NAME
: der Name des wiederherzustellenden Snapshots.IOPS_LIMIT
: Optional: Bei Hyperdisk Extreme-Laufwerken ist dies die Anzahl der E/A-Vorgänge pro Sekunde, die das Laufwerk verarbeiten kann. Informationen zu den aktuellen Leistungseinschränkungen finden Sie in der Compute Engine-Dokumentation.
Snapshot für ein Hyperdisk-Volume erstellen
Wenn Sie einen Snapshot von einem Hyperdisk-Volume erstellen möchten, gehen Sie genauso vor wie beim Erstellen eines Snapshots für ein Persistent Disk-Volume:
Bereitgestellten Durchsatz oder bereitgestellte IOPS eines vorhandenen Hyperdisk-Volumes aktualisieren
In diesem Abschnitt wird beschrieben, wie Sie die bereitgestellte Leistung für Hyperdisk-Volumes ändern.
Durchsatz
Das Aktualisieren des bereitgestellten Durchsatzes wird nur für die Volumes Hyperdisk Balanced und Hyperdisk Throughput unterstützt.
Folgen Sie zum Aktualisieren des bereitgestellten Durchsatzes Ihres Hyperdisk-Volumens der Google Cloud Console, der gcloud CLI oder der Compute Engine API-Anleitung unter Bereitgestellte Leistung für ein Hyperdisk-Volume ändern.
Sie können die bereitgestellte Durchsatzstufe (bis zu einmal alle vier Stunden) für ein Hyperdisk-Volumen nach der Volume-Erstellung ändern. Es kann bis zu 15 Minuten dauern, bis neue Durchsatzstufen wirksam werden. Während der Leistungsänderung sind Leistungs-SLAs und -SLOs nicht wirksam. Sie können den Durchsatz eines vorhandenen Volumes jederzeit ändern, unabhängig davon, ob das Laufwerk an eine laufende Instanz angehängt ist oder nicht.
Die neue Durchsatzstufe muss den unterstützten Werten für Hyperdisk-Volumes entsprechen.
IOPS
Das Aktualisieren der bereitgestellten IOPS wird nur für die Volumes Hyperdisk Balanced und Hyperdisk Extreme unterstützt.
Folgen Sie der Anleitung in der Google Cloud Console, der gcloud CLI oder der Compute Engine API unter Bereitgestellte Leistung für ein Hyperdisk-Volume ändern, um die bereitgestellte IOPS-Stufe Ihres Hyperdisk-Volumes zu aktualisieren.
Sie können die bereitgestellte IOPS-Stufe (bis zu einmal alle vier Stunden) für ein Hyperdisk-IOPS-Volume nach der Volume-Erstellung ändern. Es kann bis zu 15 Minuten dauern, bis neue IOPS-Werte wirksam werden. Während der Leistungsänderung sind jegliche Leistungs-SLAs und das SLO nicht wirksam. Sie können das IOPS-Level eines vorhandenen Volumes jederzeit ändern, unabhängig davon, ob das Laufwerk an eine laufende Instanz angehängt ist oder nicht.
Die neue IOPS-Ebene, die Sie angeben, muss den unterstützten Werten für Hyperdisk-Volumes entsprechen.
Um die bereitgestellte IOPS-Stufe für ein Hyperdisk-Volume zu aktualisieren, müssen Sie den Namen der Persistent Disk angeben, der Ihre PersistentVolumeClaim- und PersistentVolume-Ressourcen unterstützt:
Rufen Sie in der Google Cloud Console den Objektbrowser auf.
Suchen Sie den Eintrag für das PersistentVolumeClaim-Objekt.
Klicken Sie auf den Link Volume.
Öffnen Sie den YAML-Tab des zugehörigen PersistentVolume. Suchen Sie auf diesem Tab den CSI-Wert
volumeHandle
.Beachten Sie das letzte Element dieses Handles (dieser muss einen Wert wie "
pvc-XXXXX
"). Dies ist der Name Ihres PersistentVolumeClaim. Notieren Sie sich auch das Projekt und die Zone.
Durchsatz oder IOPS auf einem Hyperdisk-Volume überwachen
Informationen zum Überwachen der bereitgestellten Leistung Ihres Hyperdisk-Volumes finden Sie in der Compute Engine-Dokumentation unter Bereitgestellte IOPS und Durchsatz analysieren.
Fehlerbehebung
Dieser Abschnitt enthält Hinweise zur Behebung von Problemen mit Hyperdisk-Volumes in GKE.
Leistung oder Kapazität kann nicht geändert werden: Verhältnis außerhalb des Bereichs
Der folgende Fehler tritt auf, wenn Sie versuchen, die bereitgestellte Leistungsstufe oder Kapazität zu ändern, aber die ausgewählte Leistung oder Kapazität außerhalb des für das Volume akzeptable Bereichs liegt:
Requested provisioned throughput cannot be higher than <value>.
Requested provisioned throughput cannot be lower than <value>.
Requested provisioned throughput is too high for the requested disk size.
Requested provisioned throughput is too low for the requested disk size.
Requested disk size is too high for current provisioned throughput.
Der für Hyperdisk Throughput-Volumes bereitgestellte Durchsatz muss die folgenden Anforderungen erfüllen:
- Mindestens 10 MiBps pro TiB, aber nicht mehr als 90 MiBps pro TiB Kapazität.
- Maximal 600 MiB/s pro Volume.
Zur Behebung dieses Problems korrigieren Sie den angeforderten Durchsatz oder die angeforderte Kapazität innerhalb des zulässigen Bereichs und geben den Befehl noch einmal aus.
Leistung kann nicht geändert werden: Ratenbegrenzung
Der folgende Fehler tritt auf, wenn Sie versuchen, das bereitgestellte Leistungsniveau zu ändern, das Leistungsniveau bereits innerhalb der letzten vier Stunden geändert wurde:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
Die Durchsatzleistung von Hyperdisk Throughput- und IOPS-Volumes kann alle vier Stunden aktualisiert werden. Warten Sie, bis das Volume abgekürzt ist, und beheben Sie dann den Befehl.
Nächste Schritte
- Persistent Disk-Volumes zu Hyperdisk migrieren
- Weitere Informationen zur Verwendung der Volume-Erweiterung
- Volume-Snapshots verwenden
- Weitere Informationen zum Treiber auf GitHub