Auf dieser Seite wird beschrieben, wie Ihre Google Kubernetes Engine-Cluster (GKE) mit GKE Hyperdisk Storage Pools Speicherkapazität, Durchsatz und IOPS über mehrere Festplatten hinweg bündeln und gemeinsam nutzen können.
Übersicht
In Speicherpools werden physische Speichergeräte logisch gruppiert, sodass Sie Ihre Ressourcen segmentieren können. Sie können Google Cloud Hyperdisks in diesen Speicherpools bereitstellen und so Hyperdisk Storage Pools erstellen. Hyperdisk-Speicherpools bieten vorab bereitgestellte Kapazität, Durchsatz und IOPS, die von den Laufwerken Ihres GKE-Cluster gemeinsam genutzt werden können.
Mit Hyperdisk Storage Pools können Sie Ihre Speicherressourcen effizienter und kostengünstiger verwalten. So können Sie Effizienztechnologien wie Deduplizierung und Thin Provisioning nutzen.
In dieser Anleitung verwenden Sie die Zone us-east4-c
, um den Hyperdisk Balanced Storage Pool und andere Ressourcen zu erstellen.
Überlegungen zur Planung
Beachten Sie die folgenden Anforderungen und Einschränkungen, bevor Sie Ihren Hyperdisk Storage Pool bereitstellen und verwenden.
Speicherpools erstellen und verwalten
Es gelten folgende Anforderungen und Einschränkungen:
- Es gelten alle Einschränkungen von Compute Engine Hyperdisk Storage Pools.
- Es gelten alle Einschränkungen beim Erstellen von Laufwerken in einem Hyperdisk Storage Pool.
- Der Typ des Hyperdisk Storage Pools, den Sie erstellen, bestimmt den Typ der Laufwerke, die Sie im Speicherpool erstellen können. Weitere Informationen finden Sie unter Typen von Hyperdisk Storage Pools.
Bootlaufwerke in Speicherpools bereitstellen
Es gelten folgende Anforderungen und Einschränkungen:
- Die Bereitstellung von Bootlaufwerken in Speicherpools wird für Knotenpools mit aktivierter automatischer Knotenbereitstellung nicht unterstützt.
- Die Knotenstandorte des Clusters und die Knotenstandorte des Knotenpools müssen genau mit den Zonen des Speicherpools übereinstimmen.
- Prüfen Sie, ob der Maschinentyp, auf dem Ihr Pod ausgeführt wird, das Anhängen des Hyperdisk Balanced-Laufwerkstyps unterstützt. Hyperdisk Throughput wird nicht als Bootlaufwerk unterstützt. Weitere Informationen finden Sie in der Dokumentation zur Unterstützung von Hyperdisk-Maschinentypen.
- Sie können Bootlaufwerke in Speicherpools nur in manuell erstellten oder aktualisierten Knotenpools bereitstellen.
Angehängte Laufwerke in Speicherpools bereitstellen
Es gelten folgende Anforderungen und Einschränkungen:
- Die erforderliche Mindestversion für GKE zum Bereitstellen von angehängten Laufwerken in Speicherpools ist 1.29.2-gke.1035000 und höher.
- 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 in Autopilot-Clustern nicht deaktiviert oder bearbeitet werden. Informationen zum Aktivieren des Treibers finden Sie unter CSI-Treiber für Persistent Disk von Compute Engine auf einem vorhandenen Cluster aktivieren.
- Der Speicherpool muss sich an mindestens einem der Knotenstandorte des Clusters und der Knotenstandorte des Knotenpools befinden.
- Sie können nur Hyperdisk Throughput- und Hyperdisk Balanced-Laufwerke in Speicherpools bereitstellen. Der Typ des angehängten Laufwerks muss mit dem Typ des Speicherpools übereinstimmen. Weitere Informationen finden Sie unter Typen von Hyperdisk Storage Pools.
- In einer StorageClass ist nur ein Speicherpool pro Zone zulässig.
- Innerhalb einer StorageClass müssen alle Speicherpools denselben Speicherpooltyp haben.
- Achten Sie darauf, dass der Maschinentyp, auf dem Ihr Pod ausgeführt wird, das Anhängen des von Ihnen verwendeten Datenträgertyps aus dem Speicherpool unterstützt. Weitere Informationen finden Sie unter Unterstützung von Maschinentypen für Hyperdisk.
Kontingent
Wenn Sie einen Hyperdisk Storage Pool erstellen, können Sie ihn entweder mit Standard- oder erweiterter Bereitstellung für Kapazität und Leistung konfigurieren. Wenn Sie das Kontingent für Kapazität, Durchsatz oder IOPS erhöhen möchten, fordern Sie ein höheres Kontingent für den entsprechenden Kontingentfilter an.
Weitere Informationen finden Sie unter Kontingente für Ihr Projekt ansehen und Kontingentanpassung anfordern.
Verwenden Sie die folgenden Kontingentfilter für Hyperdisk Balanced Storage Pools:
HDB-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
: um die Kapazität mit der erweiterten Kapazitätsbereitstellung zu erhöhen.HDB-STORAGE-POOL-TOTAL-ADVANCED-IOPS-per-project-region
: um die IOPS mit der erweiterten Leistungsbereitstellung zu erhöhen.HDB-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
: um den Durchsatz mit der erweiterten Leistungsbereitstellung zu erhöhen.HDB-TOTAL-GB-per-project-region
: um die Kapazität mit der Standardkapazitätsbereitstellung zu erhöhen.HDB-TOTAL-IOPS-per-project-region
: zum Erhöhen der IOPS mit Standardleistungsbereitstellung.HDB-TOTAL-THROUGHPUT-per-project-region
: um den Durchsatz mit der Standardleistungsbereitstellung zu erhöhen.
Verwenden Sie die folgenden Kontingentfilter für Hyperdisk-Durchsatz-Speicherpools:
HDT-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
: um die Kapazität mit der erweiterten Kapazitätsbereitstellung zu erhöhen.HDT-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
: um den Durchsatz mit der erweiterten Leistungsbereitstellung zu erhöhen.HDT-TOTAL-GB-per-project-region
: um die Kapazität mit der Standardkapazitätsbereitstellung zu erhöhen.HDT-TOTAL-THROUGHPUT-per-project-region
: um den Durchsatz mit der Standardleistungsbereitstellung zu erhöhen.
Wenn Sie beispielsweise die Gesamtkapazität für Hyperdisk-abgestimmte-Speicherpools mit erweiterter Kapazitätsbereitstellung pro Projekt und Region erhöhen möchten, fordern Sie ein höheres Kontingent für den folgenden Filter an:
hdb-storage-pool-total-advanced-capacity-per-project-region
.
Preise
Weitere Informationen zu den Preisen finden Sie unter Preise für Hyperdisk-Speicherpools .
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 diesen Task 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 dem Befehl
gcloud components update
ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
- Unterstützte Regionen und Zonen für das Erstellen Ihres Hyperdisk Balanced Storage Pools
Hyperdisk Storage Pool erstellen
Erstellen Sie einen Hyperdisk Storage Pool, bevor Sie Bootlaufwerke oder angehängte Laufwerke in diesem Speicherpool bereitstellen. Weitere Informationen finden Sie unter Hyperdisk Storage Pools erstellen.
Achten Sie darauf, dass Sie Speicherpools in einer der unterstützten Zonen erstellen.
Mit dem folgenden Befehl wird beispielsweise ein Hyperdisk Balanced Storage Pool mit erweiterter Kapazität und erweiterter Leistung erstellt und 10 TB Kapazität, 10.000 IOPS/s und 1.024 MB/s Durchsatz in der Zone us-east4-c
bereitgestellt:
export PROJECT_ID=PROJECT_ID
export ZONE=us-east4-c
gcloud compute storage-pools create pool-$ZONE \
--provisioned-capacity=10tb --storage-pool-type=hyperdisk-balanced \
--zone=$ZONE --project=$PROJECT_ID --capacity-provisioning-type=advanced \
--performance-provisioning-type=advanced --provisioned-iops=10000 \
--provisioned-throughput=1024
Ersetzen Sie PROJECT_ID
durch die Projekt-ID Ihres Google Cloud Kontos.
Speicherpoolzonen prüfen
Für Autopilot-Cluster und Standardcluster mit aktivierter automatischer Knotenbereitstellung können Sie einen Speicherpool in einer beliebigen Zone in der Region des Clusters erstellen. Wenn in der Zone, in der Sie den Speicherpool erstellt haben, kein Knotenpool vorhanden ist, bleiben die Pods im Status
Pending
, bis der GKE Cluster Autoscaler einen neuen Knotenpool in dieser Zone bereitstellen kann.Erstellen Sie für Standardcluster ohne automatische Knotenbereitstellung Speicherpools in den Standardknotenzonen Ihres Clusters, da Speicherpools zonale Ressourcen sind. Mit dem Flag
--node-locations
können Sie die Knotenzonen Ihres Clusters festlegen.- Wenn Sie bei zonalen Clustern die
--node-locations
nicht angeben, werden alle Knoten in der primären Zone des Clusters erstellt. - Wenn Sie bei regionalen Clustern die
--node-locations
nicht angeben, verteilt GKE Ihre Worker-Knoten auf drei zufällig ausgewählte Zonen innerhalb der Region.
- Wenn Sie bei zonalen Clustern die
Führen Sie den folgenden Befehl aus, um die Standardknotenzonen eines Clusters zu prüfen:
gcloud container clusters describe CLUSTER_NAME | yq '.locations'
Ersetzen Sie CLUSTER_NAME
durch den Namen des Clusters, den Sie beim Bereitstellen eines Bootlaufwerks oder eines angehängten Laufwerks erstellen.
GKE-Bootlaufwerk in einem Hyperdisk Storage Pool bereitstellen
Sie können eine GKE-Bootlaufwerk in einem Hyperdisk Storage Pool bereitstellen, wenn Sie einen der folgenden Schritte ausführen:
- Beim Erstellen eines neuen GKE-Cluster
- Beim Erstellen eines neuen Knotenpools
- Vorhandenen Knotenpool aktualisieren
Beim Erstellen eines Clusters
Verwenden Sie den folgenden Befehl, um einen GKE-Cluster mit Bootlaufwerken zu erstellen, die in einem Speicherpool bereitgestellt werden:
gcloud container clusters create CLUSTER_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--location=CONTROL_PLANE_LOCATION
Ersetzen Sie dabei Folgendes:
CLUSTER_NAME
: Geben Sie einen eindeutigen Namen für den Cluster an, den Sie erstellen.DISK_TYPE
: Setzen Sie diesen Wert aufhyperdisk-balanced.
. Wenn das Feld leer gelassen wird, wird standardmäßig der Laufwerkstyp „Hyperdisk Balanced“ verwendet.STORAGE_POOL,[...]
: Eine durch Kommas getrennte Liste der Ressourcenpfade des Speicherpools (z. B.projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
), in dem die Bootlaufwerke des Clusters bereitgestellt werden. Die Zonen in den Ressourcenpfaden des Speicherpools müssen mit den Zonen in--node-locations
übereinstimmen.ZONE,[...]
: Eine durch Kommas getrennte Liste von Zonen, in denen die Knoten-Footprints repliziert werden sollen. Für regionale Cluster können Sie stattdessen Regionen angeben. Alle Zonen müssen sich in derselben Region wie der Cluster befinden, die durch das Flag--location
angegeben wird.MACHINE_TYPE
: Der unterstützte Maschinentyp, den Sie für Ihre Knoten verwenden möchten.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Beim Erstellen eines Knotenpools
Verwenden Sie den folgenden Befehl, um einen GKE-Knotenpool mit Bootlaufwerken zu erstellen, die in einem Speicherpool bereitgestellt werden:
gcloud container node-pools create NODE_POOL_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--location=CONTROL_PLANE_LOCATION --cluster=CLUSTER_NAME
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: Geben Sie einen eindeutigen Namen für den Knotenpool an, den Sie erstellen.DISK_TYPE
: Setzen Sie diesen Wert aufhyperdisk-balanced.
. Wenn das Feld leer gelassen wird, wird standardmäßig der Laufwerkstyp „Hyperdisk Balanced“ verwendet.STORAGE_POOL,[...]
: Eine durch Kommas getrennte Liste der Ressourcenpfade des Speicherpools (z. B.projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
), in dem die Bootlaufwerke des Clusters bereitgestellt werden. Die Zonen in den Ressourcenpfaden des Speicherpools müssen mit den Werten in--node-locations
übereinstimmen.ZONE,[...]
: Eine durch Kommas getrennte Liste von Zonen, in denen die Knoten-Footprints repliziert werden sollen. Alle Zonen müssen sich in derselben Region wie der Cluster befinden, die durch das Flag-location
angegeben wird.MACHINE_TYPE
: Der unterstützte Maschinentyp, den Sie für Ihre Knoten verwenden möchten.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.CLUSTER_NAME
: Ein vorhandener Cluster, in dem Sie den Knotenpool erstellen.
Beim Aktualisieren eines Knotenpools
Mit dem Befehl update
können Sie einem Knotenpool Speicherpools hinzufügen oder sie ersetzen.
Mit diesem Befehl können keine Speicherpools aus einem Knotenpool entfernt werden.
Verwenden Sie den folgenden Befehl, um einen GKE-Knotenpool so zu aktualisieren, dass seine Bootlaufwerke in einem Speicherpool bereitgestellt werden.
gcloud container node-pools update NODE_POOL_NAME \
--storage-pools=STORAGE_POOL,[...] \
--location=CONTROL_PLANE_LOCATION --cluster=CLUSTER_NAME
NODE_POOL_NAME
: Der Name eines vorhandenen Knotenpools, den Sie aktualisieren möchten, damit er einen Speicherpool verwendet.STORAGE_POOL,[...]
: Eine durch Kommas getrennte Liste mit vorhandenen Ressourcenpfaden für Speicherpools (z. B.projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
). Die Zonen in den Ressourcenpfaden für Speicherpools müssen mit der Zone des Knotenpools übereinstimmen, den Sie aktualisieren.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.CLUSTER_NAME
: Der Name des GKE-Cluster, zu dem dieser Knotenpool gehört.
Für diese Änderung müssen die Knoten neu erstellt werden, was zu Unterbrechungen Ihrer laufenden Arbeitslasten führen kann. Details zu dieser spezifischen Änderung finden Sie in der entsprechenden Zeile in der Tabelle Manuelle Änderungen, die die Knoten mithilfe einer Knotenupgrade-Strategie neu erstellen, ohne Wartungsrichtlinien zu berücksichtigen. Weitere Informationen zu Knotenupdates finden Sie unter Unterbrechungen durch Knotenupdates planen.
GKE-angehängtes Laufwerk in einem Hyperdisk Storage Pool bereitstellen
In diesem Abschnitt:
- Sie erstellen einen neuen GKE-Cluster mit angehängten Festplatten, die in einem Speicherpool bereitgestellt werden.
- Erstellen Sie eine StorageClass, um ein PersistentVolume (PV) dynamisch bereitzustellen, wenn ein Pod es über einen PersistentVolumeClaim (PVC) anfordert. Damit ein PV die freigegebenen Ressourcen des Speicherpools nutzen kann, geben Sie den Speicherpool mit dem Parameter
storage-pools
in Ihrer StorageClass an. Die StorageClass wird dann in einem PVC verwendet, um das Hyperdisk Balanced-Volume bereitzustellen, das vom Pod verwendet wird. - Erstellen Sie eine PVC, um ein PV – ein Stück Hyperdisk-Speicher – für einen Pod aus Ihrem GKE-Cluster anzufordern. So können Sie die freigegebenen Ressourcen des Speicherpools nutzen.
- Erstellen Sie ein Deployment, das einen PVC verwendet, um sicherzustellen, dass Ihre Anwendung auch nach Neustarts und Neuplanung von Pods Zugriff auf persistenten Speicher hat.
GKE-Cluster erstellen
Lesen Sie sich zuerst die Hinweise zum Bereitstellen einer angehängten Festplatte durch.
Autopilot
Informationen zum Erstellen eines Autopilot-Clusters mit der gcloud CLI finden Sie unter Autopilot-Cluster erstellen.
Beispiel:
gcloud container clusters create-auto CLUSTER_NAME --location=CONTROL_PLANE_LOCATION
Ersetzen Sie dabei Folgendes:
CLUSTER_NAME
: Geben Sie einen eindeutigen Namen für den Cluster an, den Sie erstellen.CONTROL_PLANE_LOCATION
: die Compute Engine-Region der Steuerungsebene des Clusters.
Wenn Sie einen unterstützten Maschinentyp auswählen möchten, geben Sie den cloud.google.com/compute-class: Performance
-nodeSelector beim Erstellen einer Bereitstellung an. Eine Liste der Compute Engine-Maschinenserien, die mit der Computingklasse "Leistung" verfügbar sind, finden Sie unter Unterstützte Maschinenserien.
Standard
Informationen zum Erstellen eines zonalen Standardclusters mit der gcloud CLI finden Sie unter Zonalen Cluster erstellen.
Informationen zum Erstellen eines regionalen Standardclusters mit der gcloud CLI finden Sie unter Regionalen Cluster erstellen.
Beispiel:
gcloud container clusters create CLUSTER_NAME --location=CONTROL_PLANE_LOCATION --project=PROJECT_ID --machine-type=MACHINE_TYPE --disk-type="DISK_TYPE"
Ersetzen Sie dabei Folgendes:
CLUSTER_NAME
: Geben Sie einen eindeutigen Namen für den Cluster an, den Sie erstellen.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.PROJECT_ID
: Projekt-ID Ihres Google Cloud Kontos.MACHINE_TYPE
: Der unterstützte Maschinentyp, den Sie für Ihre Knoten verwenden möchten.DISK_TYPE
: Setzen Sie diesen Wert aufhyperdisk-balanced.
. Wenn das Feld leer gelassen wird, wird standardmäßig der Laufwerkstyp „Hyperdisk Balanced“ verwendet.
StorageClass erstellen
Wenn Sie in Kubernetes angeben möchten, dass Ihr PV in einem Speicherpool erstellt werden soll, verwenden Sie eine StorageClass. Weitere Informationen finden Sie unter StorageClasses.
So erstellen Sie eine neue StorageClass mit dem gewünschten Durchsatz oder der gewünschten IOPS-Stufe:
- Verwenden Sie
pd.csi.storage.gke.io
im Feld „Provisioner“. - Geben Sie den Speichertyp „Hyperdisk Balanced“ an.
- Geben Sie den Parameter
storage-pools
mit dem Wert als Liste der zu verwendenden Speicherpools an. Jeder Speicherpool in der Liste muss im folgenden Format angegeben werden:projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME.
- Optional: Geben Sie die Leistungsparameter
provisioned-throughput-on-create
undprovisioned-iops-on-create.
an.
Jeder Hyperdisk-Typ hat Standardwerte für die Leistung, die durch die bereitgestellte anfängliche Laufwerksgröße bestimmt wird. Beim Erstellen einer StorageClass können Sie je nach Hyperdisk-Typ optional die folgenden Parameter angeben. Wenn Sie diese Parameter weglassen, verwendet GKE die Standardwerte für den festplattenbasierten Typ für die Kapazität.
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 angegeben werden. Wenn Sie beispielsweise 7.000 IOPS benötigen, geben Sie beim Erstellen der StorageClass "7000" an. |
Eine Anleitung zu zulässigen Werten für den Durchsatz oder die IOPS finden Sie unter Leistungsniveau für Ihr Hyperdisk-Volume planen.
Verwenden Sie das folgende Manifest, um eine StorageClass namens storage-pools-sc
zu erstellen und anzuwenden, um ein PV im Speicherpool projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
dynamisch bereitzustellen:
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-pools-sc
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: hyperdisk-balanced
provisioned-throughput-on-create: "140Mi"
provisioned-iops-on-create: "3000"
storage-pools: projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
EOF
Durch die Verwendung von volumeBindingMode: WaitForFirstConsumer
in dieser StorageClass wird die Bindung und Bereitstellung eines PVC verzögert, bis ein Pod, der den PVC verwendet, erstellt wird.
So wird sichergestellt, dass das PV nicht vorzeitig bereitgestellt wird und dass die Zone zwischen dem PV und dem Pod, der es verwendet, übereinstimmt. Wenn die Zonen nicht übereinstimmen, verbleibt der Pod im Status Pending
.
PersistentVolumeClaim (PVC) erstellen
Erstellen Sie einen PVC, der auf die von Ihnen erstellte StorageClass storage-pools-sc
verweist.
Verwenden Sie das folgende Manifest, um einen PVC mit dem Namen my-pvc
mit 2.048 GiB als Zielspeicherkapazität für das Hyperdisk Balanced-Volume zu erstellen:
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: storage-pools-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2048Gi
EOF
Deployment erstellen, das den PVC verwendet
Bei der Verwendung von Pods mit PersistentVolumes sollten Sie einen Workload-Controller wie ein Deployment oder ein StatefulSet verwenden.
Damit Pods in einem Knotenpool mit einer Maschinenserie geplant werden können, die Hyperdisk Balanced unterstützt, konfigurieren Sie ein Deployment mit dem Knotenselektor cloud.google.com/machine-family
. Weitere Informationen finden Sie unter Unterstützung für Maschinentypen für Hyperdisks. In der folgenden Beispielbereitstellung verwenden Sie die c3
-Maschinenserie.
Erstellen und wenden Sie das folgende Manifest an, um einen Pod für die Bereitstellung eines Postgres-Webservers mit dem im vorherigen Abschnitt erstellten PVC zu konfigurieren:
Autopilot
Geben Sie in Autopilot-Clustern den cloud.google.com/compute-class: Performance
-nodeSelector an, um ein Hyperdisk Balanced-Volume bereitzustellen. Weitere Informationen finden Sie unter Dedizierten Knoten für einen Pod anfordern.
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
cloud.google.com/compute-class: Performance
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
Standard
Achten Sie bei Standardclustern ohne aktivierte automatische Knotenbereitstellung darauf, dass ein Knotenpool mit der angegebenen Maschinenreihe ausgeführt wird, bevor Sie das Deployment erstellen. Andernfalls kann der Pod nicht geplant werden.
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
Prüfen Sie, ob das Deployment erfolgreich erstellt wurde:
kubectl get deployment
Es kann einige Minuten dauern, bis Hyperdisk-Instanzen die Bereitstellung abgeschlossen haben und den Status READY
anzeigen.
Prüfen, ob der angehängte Speicher bereitgestellt wurde
Prüfen Sie, ob Ihr PVC mit dem Namen
my-pvc
erfolgreich an einen PV gebunden wurde:kubectl get pvc my-pvc
Die Ausgabe sieht in etwa so aus:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-pvc Bound pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 2Ti RWO storage-pools-sc 2m24s
Prüfen Sie, ob das Volume wie in Ihrer StorageClass und Ihrem PVC angegeben bereitgestellt wurde:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Die Ausgabe sieht in etwa so aus:
NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048
Angehängte Laufwerke in Speicherpools sichern und wiederherstellen
Das Verschieben von Laufwerken in einen oder aus einem Speicherpool ist nicht zulässig. Wenn Sie ein Laufwerk in einen oder aus einem Speicherpool verschieben möchten, müssen Sie das Laufwerk aus einem Snapshot neu erstellen. Weitere Informationen finden Sie unter Laufwerkstyp ändern.
In diesem Abschnitt:
- Sie schreiben eine Testdatei auf das in Ihrem Pod bereitgestellte Laufwerk.
- Erstellen Sie einen Volume-Snapshot und löschen Sie die Testdatei von diesem Laufwerk.
- Stellen Sie den Snapshot auf einem neuen Laufwerk im selben Speicherpool wieder her, um die gelöschten Daten wiederherzustellen.
Eine Testdatei erstellen
So erstellen und bestätigen Sie eine Testdatei:
Rufen Sie den Pod-Namen der Postgres-Bereitstellung ab:
kubectl get pods -l app=postgres
Die Ausgabe sieht in etwa so aus:
NAME READY STATUS RESTARTS AGE postgres-78fc84c9ff-77vx6 1/1 Running 0 44s
Erstellen Sie in einem Pod eine Testdatei
hello.txt
kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'echo "Hello World!" > /usr/share/data/hello.txt'
Prüfen Sie, ob die Testdatei erstellt wurde:
kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
Volume-Snapshot erstellen und Testdatei löschen
So erstellen und überprüfen Sie einen Snapshot:
Erstellen Sie eine VolumeSnapshotClass, die angibt, wie der Snapshot Ihrer Volumes erstellt und verwaltet werden soll:
kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: my-snapshotclass driver: pd.csi.storage.gke.io deletionPolicy: Delete EOF
Erstellen Sie einen VolumeSnapshot und nehmen Sie den Snapshot vom Volume auf, das an den
my-pvc
PersistentVolumeClaim gebunden ist:kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-snapshot spec: volumeSnapshotClassName: my-snapshotclass source: persistentVolumeClaimName: my-pvc EOF
Prüfen Sie, ob der Volume-Snapshot-Inhalt erstellt wurde:
kubectl get volumesnapshotcontents
Die Ausgabe sieht in etwa so aus:
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE snapcontent-e778fde2-5f1c-4a42-a43d-7f9d41d093da false 2199023255552 Delete pd.csi.storage.gke.io my-snapshotclass my-snapshot default 33s
Prüfen Sie, ob der Snapshot einsatzbereit ist:
kubectl get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
Die Ausgabe sieht in etwa so aus:
NAME READY my-snapshot true
Löschen Sie die ursprüngliche Testdatei
hello.txt
, die im Podpostgres-78fc84c9ff-77vx6
erstellt wurde:kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'rm /usr/share/data/hello.txt'
Volume-Snapshot wiederherstellen
So stellen Sie den Volume-Snapshot und die Daten wieder her:
Erstellen Sie ein neues PVC, das Daten aus einem Snapshot wiederherstellt und dafür sorgt, dass das neue Volume im selben Speicherpool (
storage-pools-sc
) wie das ursprüngliche Volume bereitgestellt wird. Wenden Sie das folgende Manifest an:kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-restore spec: dataSource: name: my-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: storage-pools-sc accessModes: - ReadWriteOnce resources: requests: storage: 2048Gi EOF
Aktualisieren Sie die vorhandene Bereitstellung mit dem Namen
postgres
, damit sie den neu wiederhergestellten PVC verwendet, den Sie gerade erstellt haben. Wenden Sie das folgende Manifest an:kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: postgres spec: selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: nodeSelector: cloud.google.com/machine-family: c3 containers: - name: postgres image: google/cloud-sdk:slim args: [ "sleep", "3600" ] volumeMounts: - name: sdk-volume mountPath: /usr/share/data/ volumes: - name: sdk-volume persistentVolumeClaim: claimName: pvc-restore EOF
Rufen Sie den Namen des neu erstellten Pods ab, der Teil des
postgres
-Deployments ist:kubectl get pods -l app=postgres
Die Ausgabe sieht in etwa so aus:
NAME READY STATUS RESTARTS AGE postgres-59f89cfd8c-42qtj 1/1 Running 0 40s
Prüfen Sie, ob die Datei
hello.txt
, die zuvor gelöscht wurde, nach dem Wiederherstellen des Volumes aus dem Snapshot im neuen Pod (postgres-59f89cfd8c-42qtj
) vorhanden ist:kubectl exec postgres-59f89cfd8c-42qtj \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
So prüfen Sie, ob der Snapshot- und Wiederherstellungsvorgang erfolgreich abgeschlossen wurde und die Daten aus dem Snapshot in der neuen PV wiederhergestellt wurden, auf die der Pod zugreifen kann.
Prüfen Sie, ob sich das aus dem Snapshot erstellte Volume in Ihrem Speicherpool befindet:
kubectl get pvc pvc-restore
Die Ausgabe sieht in etwa so aus:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-restore Bound pvc-b287c387-bc51-4100-a00e-b5241d411c82 2Ti RWO storage-pools-sc 2m24s
Prüfen Sie, ob das neue Volume wie in Ihrer StorageClass und Ihrem PVC angegeben bereitgestellt wurde:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Die Ausgabe sieht in etwa so aus. Das neue Volume
pvc-b287c387-bc51-4100-a00e-b5241d411c82
wird im selben Speicherpool bereitgestellt.NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048 pvc-b287c387-bc51-4100-a00e-b5241d411c82 READY 3000 140 2048
So wird sichergestellt, dass das wiederhergestellte Volume von den freigegebenen Ressourcen und Funktionen des Pools profitiert.
Vorhandene Volumes in einen Speicherpool migrieren
Mit Snapshot und Wiederherstellung können Sie Volumes, die sich außerhalb eines Speicherpools befinden, in einen Speicherpool migrieren.
Achten Sie darauf, dass die folgenden Bedingungen erfüllt sind:
- Ihr neuer PVC
pvc-restore
verweist auf eine StorageClass, in der der Parameterstorage-pools
angegeben ist und auf den Speicherpool verweist, in den Sie das Volume verschieben möchten. - Das Quell-PV, von dem ein Snapshot erstellt wird, muss einem PVC mit einer StorageClass zugeordnet sein, in der der Parameter
storage-pools
nicht angegeben ist.
Nachdem Sie ein neues Volume aus einem Snapshot wiederhergestellt haben, können Sie den Quell-PVC und das Quell-PV löschen.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Speicherressourcen, damit Ihrem Google Cloud Konto keine Gebühren in Rechnung gestellt werden. Löschen Sie zuerst alle Festplatten im Speicherpool und dann den Speicherpool.
Bootlaufwerk löschen
Wenn Sie einen Knoten (durch Herunterskalieren des Knotenpools) oder einen gesamten Knotenpool löschen, werden die zugehörigen Bootlaufwerke automatisch gelöscht. Sie können auch den Cluster löschen, um die Bootlaufwerke aller Knotenpools darin automatisch zu löschen.
Weitere Informationen finden Sie unter:
Angehängtes Laufwerk löschen
So löschen Sie das angehängte Laufwerk, das in einem Hyperdisk Storage Pool bereitgestellt wurde:
Löschen Sie den Pod, der den PVC verwendet:
kubectl delete deployments postgres
Löschen Sie den PVC, der die StorageClass des Hyperdisk Storage Pools verwendet.
kubectl delete pvc my-pvc
Prüfen Sie, ob der PVC
pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6
gelöscht wurde:gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
Hyperdisk Storage Pool löschen
Löschen Sie den Hyperdisk Storage Pool mit dem folgenden Befehl:
gcloud compute storage-pools delete pool-us-east4-c --zone=us-east4-c --project=my-project
Nächste Schritte
- Weitere Informationen finden Sie unter Fehlerbehebung bei Speicher in GKE.
- Weitere Informationen zum CSI-Treiber für Persistent Disk auf GitHub