In diesem Dokument wird beschrieben, wie Sie die Leistung Ihrer Redis-Arbeitslasten in Google Kubernetes Engine (GKE) verbessern können, indem Sie optimierte Konfigurationen auf Anwendungs- und Knotenebene generieren. Weitere Informationen finden Sie unter Für Arbeitslasten in GKE optimieren.
Die Optimierungen für Redis wurden für eine Redis 7-Instanz ermittelt, die als Look-Aside-Cache mit einem einzelnen Knoten mit einem Lese-/Schreibverhältnis von 4:1 (4 Lesevorgänge zu 1 Schreibvorgang) verwendet wird. Die Leistung wurde mit Memtier 2.2.1 gemessen. Überlegen Sie, wie die Redis-Arbeitslast in Ihrem Cluster im Vergleich zu diesem Anwendungsfall verwendet wird. Wenn sich Ihr Anwendungsfall unterscheidet, müssen die empfohlenen Optimierungen möglicherweise an Ihren Kontext angepasst werden.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die GKE Recommender API und die Google Kubernetes Engine API. APIs 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 dem Befehl
gcloud components updateab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Voraussetzungen
Verwenden Sie die GKE-Version 1.31.1-gke.12000 oder höher.
Für Redis-Arbeitslasten optimieren
Wir empfehlen, für Ihre Redis-Arbeitslast einen dedizierten Knotenpool zu verwenden. Standardmäßig wird ein neuer Knotenpool erstellt, wenn Sie die folgenden Schritte ausführen.
So optimieren Sie die Leistung einer Redis-Arbeitslast:
Erstellen Sie die Manifeste mit Optimierungen für die Redis-Arbeitslast, indem Sie Folgendes tun:
Generieren Sie Manifeste mit empfohlenen Optimierungen, indem Sie den folgenden Befehl ausführen:
gcloud container workload profiles manifests create \ --workload=redis-7-caching \ --cluster-version=CLUSTER_VERSION \ --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlErsetzen Sie Folgendes:
CLUSTER_VERSION: die GKE-Version. Wir empfehlen GKE-Version 1.31.1-gke.12000 oder höher.MACHINE_TYPE: der gewünschte Maschinentyp.
Das Flag
--output-path=/tmp/manifests.yamlist optional. Wenn es nicht angegeben ist, werden die Manifeste im Terminal ausgegeben, aber nicht in einer Datei gespeichert.Mit diesem Befehl wird eine einzelne YAML-Datei mit zwei Kubernetes-Ressourcen generiert:
- Eine ConfigMap, die eine Redis-Konfiguration mit dem Namen
redis.confangibt. - Ein ComputeClass-Objekt. Damit werden Maschinen angegeben, auf denen Redis ausgeführt werden soll. Dies ist optional. Weitere Informationen zum Angeben von Maschinentypen finden Sie unter Benutzerdefinierte Compute-Klassen.
Hier sehen Sie ein Beispiel für das generierte Manifest:
apiVersion: v1 kind: ConfigMap metadata: name: redis.conf data: redis.conf: | io-threads 2 io-threads-do-reads yes save "" --- apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: generateName: optimized-gke-redis-7-caching- spec: nodePoolAutoCreation: enabled: true priorities: - machineType: c4-standard-4 whenUnsatisfiable: DoNotScaleUpSehen Sie sich die Empfehlungen an und ändern Sie die Manifeste so, dass sie die gewünschten Optimierungen enthalten. So können Sie die Empfehlungen bewerten:
- Sehen Sie sich die Redis-Dokumentation an, um die empfohlene Konfiguration für Ihren Kontext zu ermitteln.
- Vergleichen Sie die Nutzung der Redis-Arbeitslast in Ihrem Cluster mit dem folgenden Anwendungsfall. Wenn sich Ihr Anwendungsfall unterscheidet, müssen die empfohlenen Optimierungen möglicherweise an Ihren Kontext angepasst werden.
Die Optimierungen für Redis wurden für eine Redis 7-Instanz ermittelt, die als Look-Aside-Cache mit einem einzelnen Knoten mit einem Lese-/Schreibverhältnis von 4:1 (4 Lesevorgänge zu 1 Schreibvorgang) verwendet wird. Die Leistung wurde mit Memtier 2.2.1 gemessen.
Bearbeiten Sie die Manifestdatei, wenn Sie die Konfiguration ändern oder ergänzen möchten.
Wenden Sie die Manifeste mit dem folgenden Befehl auf den Cluster an:
kubectl create -f /tmp/manifests.yaml
Stellen Sie einen Pod bereit, der auf die Optimierungen verweist. Beispiel:
apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis:7 args: - /etc/gke/optimization/redis.conf volumeMounts: - name: gke-optimized-workload-config subPath: redis.conf mountPath: /etc/gke/optimization/redis.conf readOnly: true volumes: - name: gke-optimized-workload-config configMap: name: redis.conf nodeSelector: cloud.google.com/compute-class: optimized-gke-redis-7-caching-abc123Wenden Sie dann das Pod-Manifest auf den Cluster an:
kubectl apply -f pod.yamlPrüfen Sie, ob Redis die optimierte Konfiguration verwendet. Führen Sie dazu den folgenden Befehl aus, um sicherzustellen, dass Redis die optimierte Konfiguration verwendet:
kubectl exec redis -- redis-cli INFO server | grep config_fileDie Ausgabe sollte in etwa so aussehen:
config_file:/etc/gke/optimization/redis.confSie können auch den Befehl
redis-cliverwenden, um die einzelnen Richtlinien abzufragen, die in der optimierten Konfiguration festgelegt sind, z. B.io-threads.
Wenn Sie die Arbeitslast bereitstellen, erstellt der Cluster einen neuen Knotenpool, der der optimierten Konfiguration entspricht, und weist Ihre Pods diesen Knotenpools zu.
Bereits vorhandene Pods werden nicht geändert. Nur Pods, die auf die optimierten Konfigurationen verweisen, werden optimiert. Wenn Sie zuvor Redis-Arbeitslasten in Ihrem Cluster bereitgestellt haben, müssen Sie diese Arbeitslasten noch einmal bereitstellen, damit sie mit den optimierten Konfigurationen ausgeführt werden.
Nächste Schritte
- Weitere Informationen zur Arbeitslastoptimierung in GKE
- Weitere Informationen zum Bereitstellen eines Redis-Clusters in GKE
- Weitere Informationen zu GKE ComputeClasses
- Informationen zum Optimieren von MySQL-Arbeitslasten finden Sie unter MySQL-Arbeitslastleistung in GKE optimieren.