Sie können Data Cache nur mit GKE Standard-Clustern verwenden. In dieser Anleitung erfahren Sie, wie Sie GKE Data Cache aktivieren, wenn Sie einen neuen GKE Standard-Cluster oder einen Knotenpool erstellen, und wie Sie angehängte GKE-Laufwerke mit Data Cache-Beschleunigung bereitstellen.
GKE Data Cache
Mit GKE Data Cache können Sie lokale SSDs auf Ihren GKE-Knoten als Cache-Ebene für Ihren nichtflüchtigen Speicher wie nichtflüchtige Speicher oder Hyperdisks verwenden. Durch die Verwendung lokaler SSDs wird die Leselatenz von Laufwerken verringert und die Anzahl der Abfragen pro Sekunde (Queries Per Second, QPS) für Ihre zustandsorientierten Arbeitslasten erhöht, während die Arbeitsspeicheranforderungen minimiert werden. GKE Data Cache unterstützt alle Arten von nichtflüchtigen Speichern oder Hyperdisk als Sicherungslaufwerke.
Wenn Sie GKE Data Cache für Ihre Anwendung verwenden möchten, konfigurieren Sie Ihren GKE-Knotenpool mit angehängten lokalen SSDs. Sie können GKE Data Cache so konfigurieren, dass die gesamte angehängte lokale SSD oder nur ein Teil davon verwendet wird. Lokale SSDs, die von der GKE Data Cache -Lösung verwendet werden, werden im Ruhezustand mit der Standard Google Cloud verschlüsselung verschlüsselt.
Vorteile
GKE Data Cache bietet folgende Vorteile:
- Höhere Anzahl von Abfragen, die pro Sekunde für herkömmliche Datenbanken wie MySQL oder Postgres und Vektordatenbanken verarbeitet werden.
- Verbesserte Leseleistung für zustandsorientierte Anwendungen durch Minimierung der Laufwerklatenz.
- Schnellere Datenhydration und -rehydration, da sich die SSDs lokal auf dem Knoten befinden. Mit Datenhydration wird der erste Prozess bezeichnet, bei dem die erforderlichen Daten aus dem nichtflüchtigen Speicher auf die lokale SSD geladen werden. Mit Datenrehydration wird der Prozess bezeichnet, bei dem die Daten auf den lokalen SSDs wiederhergestellt werden, nachdem ein Knoten wiederverwendet wurde.
Bereitstellungsarchitektur
Das folgende Diagramm zeigt ein Beispiel für eine GKE Data Cache-Konfiguration mit zwei Pods, auf denen jeweils eine App ausgeführt wird. Die Pods werden auf demselben GKE-Knoten ausgeführt. Jeder Pod verwendet eine separate lokale SSD und einen nichtflüchtigen Sicherungsspeicher.
Bereitstellungsmodi
Sie können GKE Data Cache in einem von zwei Modi einrichten:
- Writethrough (empfohlen): Wenn Ihre Anwendung Daten schreibt, werden die Daten synchron sowohl in den Cache als auch auf den zugrunde liegenden nichtflüchtigen Speicher geschrieben. Der Modus
writethroughverhindert Datenverlust und eignet sich für die meisten Produktionsarbeitslasten. - Writeback: Wenn Ihre Anwendung Daten schreibt, werden die Daten nur
in den Cache geschrieben. Anschließend werden die Daten asynchron (im Hintergrund) auf den nichtflüchtigen Speicher geschrieben. Der Modus
writebackverbessert die Schreibleistung und eignet sich für Arbeitslasten, bei denen Geschwindigkeit wichtig ist. Dieser Modus wirkt sich jedoch auf die Zuverlässigkeit aus. Wenn der Knoten unerwartet heruntergefahren wird, gehen nicht geleerte Cachedaten verloren.
Ziele
In dieser Anleitung erfahren Sie, wie Sie:
- Eine zugrunde liegende GKE-Infrastruktur erstellen für die Verwendung von GKE Data Cache.
- Einen dedizierten Knotenpool mit angehängten lokalen SSDs erstellen.
- Eine StorageClass erstellen, um ein PersistentVolume (PV) dynamisch bereitzustellen, wenn ein Pod es über einen PersistentVolumeClaim (PVC) anfordert.
- Einen PVC erstellen, um ein PV anzufordern.
- Ein Deployment erstellen, das einen PVC verwendet, um sicherzustellen, dass Ihre Anwendung auch nach einem Neustart eines Pods und während der Neuplanung auf nichtflüchtigen Speicher zugreifen kann.
Anforderungen und Planung
Achten Sie darauf, dass die folgenden Anforderungen für die Verwendung von GKE Data Cache erfüllt sind:
- Auf Ihrem GKE-Cluster muss Version 1.32.3-gke.1440000 oder höher ausgeführt werden.
- Ihre Knotenpools müssen Maschinentypen verwenden, die lokale SSDs unterstützen. Weitere Informationen finden Sie unter Unterstützung für Maschinenserien.
Planung
Berücksichtigen Sie bei der Planung der Speicherkapazität für GKE Data Cache die folgenden Aspekte:
- Die maximale Anzahl von Pods pro Knoten, die GKE Data Cache gleichzeitig verwenden.
- Die erwarteten Cache-Größenanforderungen von Pods, die GKE Data Cache verwenden.
- Die Gesamtkapazität der lokalen SSDs, die auf Ihren GKE-Knoten verfügbar sind. Informationen dazu, welche Maschinentypen standardmäßig angehängte lokale SSDs haben und bei welchen Maschinentypen Sie lokale SSDs anhängen müssen, finden Sie unter Gültige Anzahl lokaler SSD-Laufwerke auswählen.
- Bei Maschinentypen der dritten oder einer späteren Generation (mit einer standardmäßigen Anzahl angehängter lokaler SSDs) werden die lokalen SSDs für Data Cache aus den insgesamt verfügbaren lokalen SSDs auf dieser Maschine reserviert.
- Der Dateisystem-Overhead, der den nutzbaren Speicherplatz auf lokalen SSDs verringern kann. Auch wenn Sie beispielsweise einen Knoten mit zwei lokalen SSDs mit einer Gesamtkapazität von 750 GiB haben, ist der verfügbare Speicherplatz für alle Data Cache-Volumes aufgrund des Dateisystem-Overheads möglicherweise geringer. Ein Teil der lokalen SSD-Kapazität ist für die Systemnutzung reserviert.
Beschränkungen
Inkompatibilität mit Backup for GKE
Um die Datenintegrität in Szenarien wie der Notfallwiederherstellung oder der Anwendungsmigration aufrechtzuerhalten, müssen Sie möglicherweise Ihre Daten sichern und wiederherstellen. Wenn Sie Backup for GKE verwenden, um einen PVC wiederherzustellen, der für die Verwendung von Data Cache konfiguriert ist, schlägt der Wiederherstellungsprozess fehl. Dieser Fehler tritt auf, weil die erforderlichen Data Cache-Parameter nicht korrekt von der ursprünglichen StorageClass weitergegeben werden.
Preise
Ihnen wird die gesamte bereitgestellte Kapazität Ihrer lokalen SSDs und der angehängten nichtflüchtigen Speicher in Rechnung gestellt. Die Abrechnung erfolgt pro GiB und Monat.
Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Laufwerkspreise.
Hinweis
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,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Prüfen Sie die Maschinentypen, die lokale SSDs unterstützen für Ihren Knotenpool.
GKE-Knoten für die Verwendung von Data Cache konfigurieren
Damit Sie GKE Data Cache für beschleunigten Speicher verwenden können, müssen Ihre Knoten die erforderlichen lokalen SSD-Ressourcen haben. In diesem Abschnitt werden Befehle zum Bereitstellen lokaler SSDs und zum Aktivieren von GKE Data Cache beim Erstellen eines neuen GKE-Cluster oder beim Hinzufügen eines neuen Knotenpools zu einem vorhandenen Cluster gezeigt. Sie können einen vorhandenen Knotenpool nicht aktualisieren, um Data Cache zu verwenden. Wenn Sie Data Cache in einem vorhandenen Cluster verwenden möchten, fügen Sie dem Cluster einen neuen Knotenpool hinzu.
In einem neuen Cluster
Verwenden Sie den folgenden Befehl, um einen GKE-Cluster mit konfigurierter Data Cache-Funktion zu erstellen:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--data-cache-count=DATA_CACHE_COUNT \
# Optionally specify additional Local SSDs, or skip this flag
--ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT
Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des Clusters. Geben Sie einen eindeutigen Namen für den GKE-Cluster an, den Sie erstellen.LOCATIONist die Google Cloud Region oder Zone für den neuen Cluster.MACHINE_TYPE: der Maschinentyp, der aus einer Maschinenserie der zweiten, dritten oder einer späteren Generation für Ihren Cluster verwendet werden soll, z. B.n2-standard-2oderc3-standard-4-lssd. Dieses Feld ist erforderlich, da die lokale SSD nicht mit dem Standardtype2-mediumverwendet werden kann. Weitere Informationen finden Sie unter Verfügbare Maschinenserien.DATA_CACHE_COUNTist die Anzahl der lokalen SSD-Volumes, die auf jedem Knoten im Standardknotenpool ausschließlich für Data Cache verwendet werden sollen. Jede dieser lokalen SSDs hat eine Kapazität von 375 GiB. Die maximale Anzahl von Volumes variiert je nach Maschinentyp und Region. Beachten Sie, dass ein Teil der lokalen SSD-Kapazität für die Systemnutzung reserviert ist.(Optional)
LOCAL_SSD_COUNTist die Anzahl der lokalen SSD-Volumes, die für andere sitzungsspezifische Speicheranforderungen bereitgestellt werden sollen. Verwenden Sie das--ephemeral-storage-local-ssd countFlag, wenn Sie zusätzliche lokale SSDs bereitstellen möchten, die nicht für Data Cache verwendet werden.Beachten Sie Folgendes für die Maschinentypen der dritten oder einer späteren Generation:
- Bei Maschinentypen der dritten oder einer späteren Generation ist standardmäßig eine bestimmte Anzahl lokaler SSDs angehängt. Die Anzahl der lokalen SSDs die an jeden Knoten angehängt sind, hängt vom angegebenen Maschinentyp ab.
- Wenn Sie das Flag
--ephemeral-storage-local-ssd countfür zusätzlichen sitzungsspezifischen Speicher verwenden möchten, legen Sie den Wert vonDATA_CACHE_COUNTauf eine Zahl fest, die kleiner als die insgesamt verfügbaren lokalen SSD-Laufwerke auf der Maschine ist. Die insgesamt verfügbare Anzahl lokaler SSDs umfasst die standardmäßig angehängten Laufwerke und alle neuen Laufwerke, die Sie mit dem Flag--ephemeral-storage-local-ssd counthinzufügen.
Mit diesem Befehl wird ein GKE-Cluster erstellt, der für seinen Standardknotenpool auf einem Maschinentyp der zweiten, dritten oder einer späteren Generation ausgeführt wird. Außerdem werden lokale SSDs für Data Cache bereitgestellt und optional zusätzliche lokale SSDs für andere sitzungsspezifische Speicheranforderungen, falls angegeben.
Diese Einstellungen gelten nur für den Standardknotenpool.
In einem vorhandenen Cluster
Wenn Sie Data Cache in einem vorhandenen Cluster verwenden möchten, müssen Sie einen neuen Knotenpool mit konfigurierter Data Cache-Funktion erstellen.
Verwenden Sie den folgenden Befehl, um einen GKE-Knotenpool mit konfigurierter Data Cache-Funktion zu erstellen:
gcloud container node-pool create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--data-cache-count=DATA_CACHE_COUNT \
# Optionally specify additional Local SSDs, or skip this flag
--ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT
Ersetzen Sie Folgendes:
NODE_POOL_NAMEist der Name des Knotenpools. Geben Sie einen eindeutigen Namen für den Knotenpool an, den Sie erstellen.CLUSTER_NAMEist der Name eines vorhandenen GKE-Clusters, in dem Sie den Knotenpool erstellen möchten.LOCATIONist dieselbe Google Cloud Region oder Zone wie Ihr Cluster.MACHINE_TYPE: der Maschinentyp, der aus einer Maschinenserie der zweiten, dritten oder einer späteren Generation für Ihren Cluster verwendet werden soll, z. B.n2-standard-2oderc3-standard-4-lssd. Dieses Feld ist erforderlich, da die lokale SSD nicht mit dem Standardtype2-mediumverwendet werden kann. Weitere Informationen finden Sie unter Verfügbare Maschinenserien.DATA_CACHE_COUNTist die Anzahl der lokalen SSD-Volumes, die auf jedem Knoten im Knotenpool ausschließlich für Data Cache verwendet werden sollen. Jede dieser lokalen SSDs hat eine Kapazität von 375 GiB. Die maximale Anzahl von Volumes variiert je nach Maschinentyp und Region. Beachten Sie, dass ein Teil der lokalen SSD-Kapazität für die Systemnutzung reserviert ist.(Optional)
LOCAL_SSD_COUNTist die Anzahl der lokalen SSD-Volumes, die für andere sitzungsspezifische Speicheranforderungen bereitgestellt werden sollen. Verwenden Sie das--ephemeral-storage-local-ssd countFlag, wenn Sie zusätzliche lokale SSDs bereitstellen möchten, die nicht für Data Cache verwendet werden.Beachten Sie Folgendes für die Maschinentypen der dritten oder einer späteren Generation:
- Bei Maschinentypen der dritten oder einer späteren Generation ist standardmäßig eine bestimmte Anzahl lokaler SSDs angehängt. Die Anzahl der lokalen SSDs die an jeden Knoten angehängt sind, hängt vom angegebenen Maschinentyp ab.
- Wenn Sie das Flag
--ephemeral-storage-local-ssd countfür zusätzlichen sitzungsspezifischen Speicher verwenden möchten, legen SieDATA_CACHE_COUNTauf eine Zahl fest, die kleiner als die insgesamt verfügbaren lokalen SSD-Laufwerke auf der Maschine ist. Die insgesamt verfügbare Anzahl lokaler SSDs umfasst die standardmäßig angehängten Laufwerke und alle neuen Laufwerke, die Sie mit dem Flag--ephemeral-storage-local-ssd counthinzufügen.
Mit diesem Befehl wird ein GKE-Knotenpool erstellt, der auf einem Maschinentyp der zweiten, dritten oder einer späteren Generation ausgeführt wird. Außerdem werden lokale SSDs für Data Cache bereitgestellt und optional zusätzliche lokale SSDs für andere sitzungsspezifische Speicheranforderungen, falls angegeben.
Data Cache für nichtflüchtigen Speicher in GKE bereitstellen
In diesem Abschnitt finden Sie ein Beispiel dafür, wie Sie die Leistungsvorteile von GKE Data Cache für Ihre zustandsorientierten Anwendungen nutzen können.
Knotenpool mit lokalen SSDs für Data Cache erstellen
Erstellen Sie zuerst einen neuen Knotenpool mit angehängten lokalen SSDs in Ihrem GKE-Cluster. GKE Data Cache verwendet die lokalen SSDs, um die Leistung der angehängten nichtflüchtigen Speicher zu beschleunigen.
Mit dem folgenden Befehl wird ein Knotenpool erstellt, der eine Maschine der zweiten Generation verwendet (n2-standard-2):
gcloud container node-pools create datacache-node-pool \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--num-nodes=2 \
--data-cache-count=1 \
--machine-type=n2-standard-2
Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des Clusters. Geben Sie den GKE-Cluster an, in dem Sie den neuen Knotenpool erstellen.LOCATIONist dieselbe Google Cloud Region oder Zone wie Ihr Cluster.
Mit diesem Befehl wird ein Knotenpool mit den folgenden Spezifikationen erstellt:
--num-nodes=2legt die anfängliche Anzahl der Knoten in diesem Pool auf zwei fest.--data-cache-count=1gibt eine lokale SSD pro Knoten an, die für GKE Data Cache verwendet wird.
Die Gesamtzahl der lokalen SSDs, die für diesen Knotenpool bereitgestellt werden, beträgt zwei, da für jeden Knoten eine lokale SSD bereitgestellt wird.
StorageClass für Data Cache erstellen
Erstellen Sie eine Kubernetes-StorageClass
die GKE anweist, wie ein PersistentVolume dynamisch bereitgestellt werden soll
das Data Cache verwendet.
Verwenden Sie das folgende Manifest, um eine StorageClass mit dem Namen pd-balanced-data-cache-sc zu erstellen und anzuwenden:
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-balanced-data-cache-sc
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-balanced
data-cache-mode: writethrough
data-cache-size: "100Gi"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
EOF
Zu den StorageClass-Parametern für Data Cache gehören:
typegibt den zugrunde liegenden Laufwerkstyp für das PersistentVolume an. Weitere Optionen finden Sie unter den unterstützten Persistent Disk-Typen oder Hyperdisk-Typen.data-cache-modeverwendet den empfohlenen Moduswritethrough. Weitere Informationen finden Sie unter Bereitstellungsmodi.data-cache-sizelegt die lokale SSD-Kapazität auf 100 GiB fest, die als Lesecache für jeden PVC verwendet wird.
Speicher mit einem PersistentVolumeClaim (PVC) anfordern
Erstellen Sie einen PVC, der auf die von Ihnen erstellte StorageClass pd-balanced-data-cache-sc verweist. Der PVC fordert ein PersistentVolume mit aktivierter Data Cache-Funktion an.
Verwenden Sie das folgende Manifest, um einen PVC mit dem Namen pvc-data-cache zu erstellen, der ein PersistentVolume von mindestens 300 GiB mit ReadWriteOnce-Zugriff anfordert.
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-data-cache
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 300Gi
storageClassName: pd-balanced-data-cache-sc
EOF
Deployment erstellen, das den PVC verwendet
Erstellen Sie ein Deployment mit dem Namen postgres-data-cache, das einen Pod ausführt, der den zuvor erstellten PVC pvc-data-cache verwendet. Der Knotenselektor cloud.google.com/gke-data-cache-count sorgt dafür, dass der Pod auf einem Knoten geplant wird, der die für die Verwendung von GKE Data Cache erforderlichen lokalen SSD-Ressourcen hat.
Erstellen und wenden Sie das folgende Manifest an, um einen Pod zu konfigurieren, der einen Postgres-Webserver mit dem PVC bereitstellt:
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-data-cache
labels:
name: database
app: data-cache
spec:
replicas: 1
selector:
matchLabels:
service: postgres
app: data-cache
template:
metadata:
labels:
service: postgres
app: data-cache
spec:
nodeSelector:
cloud.google.com/gke-data-cache-disk: "1"
containers:
- name: postgres
image: postgres:14-alpine
volumeMounts:
- name: pvc-data-cache-vol
mountPath: /var/lib/postgresql/data2
subPath: postgres
env:
- name: POSTGRES_USER
value: admin
- name: POSTGRES_PASSWORD
value: password
restartPolicy: Always
volumes:
- name: pvc-data-cache-vol
persistentVolumeClaim:
claimName: pvc-data-cache
EOF
Prüfen Sie, ob das Deployment erfolgreich erstellt wurde:
kubectl get deployment
Es kann einige Minuten dauern, bis die Bereitstellung des Postgres-Containers abgeschlossen ist und der Status READY angezeigt wird.
Bereitstellung von Data Cache prüfen
Nachdem Sie das Deployment erstellt haben, prüfen Sie, ob der nichtflüchtige Speicher mit Data Cache korrekt bereitgestellt wurde.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr
pvc-data-cacheerfolgreich an ein PersistentVolume gebunden wurde:kubectl get pvc pvc-data-cacheDie Ausgabe sieht etwa so aus:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-data-cache Bound pvc-e9238a16-437e-45d7-ad41-410c400ae018 300Gi RWO pd-balanced-data-cache-sc <unset> 10mSo prüfen Sie, ob die Logical Volume Manager (LVM)-Gruppe für Data Cache auf dem Knoten erstellt wurde:
Rufen Sie den Pod-Namen des PDCSI-Treibers auf diesem Knoten ab:
NODE_NAME=$(kubectl get pod --output json | jq '.items[0].spec.nodeName' | sed 's/\"//g') kubectl get po -n kube-system -o wide | grep ^pdcsi-node | grep $NODE_NAMEKopieren Sie in der Ausgabe den Namen des
pdcsi-node-Pods.PDCSI-Treiberlogs für die Erstellung der LVM-Gruppe ansehen:
PDCSI_POD_NAME="PDCSI-NODE_POD_NAME" kubectl logs -n kube-system $PDCSI_POD_NAME gce-pd-driver | grep "Volume group creation"Ersetzen Sie
PDCSI-NODE_POD_NAMEdurch den tatsächlichen Pod-Namen, den Sie im vorherigen Schritt kopiert haben.Die Ausgabe sieht etwa so aus:
Volume group creation succeeded for LVM_GROUP_NAME
Diese Meldung bestätigt, dass die LVM-Konfiguration für Data Cache auf dem Knoten korrekt eingerichtet ist.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Speicherressourcen, um Gebühren für Ihr Google Cloud Konto zu vermeiden.
Löschen Sie das Deployment.
kubectl delete deployment postgres-data-cacheLöschen Sie den PersistentVolumeClaim.
kubectl delete pvc pvc-data-cacheLöschen Sie den Knotenpool.
gcloud container node-pools delete datacache-node-pool \ --cluster CLUSTER_NAMEErsetzen Sie
CLUSTER_NAMEdurch den Namen des Clusters, in dem Sie den Knotenpool erstellt haben, der Data Cache verwendet.
Nächste Schritte
- Informationen zur Fehlerbehebung bei Speicherproblemen in GKE
- Weitere Informationen zum CSI-Treiber für Persistent Disk auf GitHub.