In diesem Dokument wird beschrieben, wie Sie die Leistung Ihrer Redis-Arbeitslasten in der 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 und einem Lese-Schreib-Verhältnis von 4:1 (4 Lesevorgänge pro 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 Ihr Anwendungsfall abweicht, 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. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Voraussetzungen
Verwenden Sie die GKE-Version 1.31.1-gke.12000 oder höher.
Für Redis-Arbeitslasten optimieren
Wir empfehlen, einen dedizierten Knotenpool für Ihre Redis-Arbeitslast zu verwenden. Wenn Sie die folgenden Schritte ausführen, wird standardmäßig ein neuer Knotenpool erstellt.
So optimieren Sie die Leistung einer Redis-Arbeitslast:
Erstellen Sie die Manifeste mit Optimierungen für die Redis-Arbeitslast so:
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. Empfohlen wird die 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 er 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. Hier werden die Maschinen angegeben, auf denen Redis ausgeführt werden soll. Dies ist optional. Weitere Informationen zur Angabe von Maschinentypen finden Sie unter Benutzerdefinierte ComputeClasses.
Hier 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: DoNotScaleUpPrüfen Sie die Empfehlungen und ändern Sie die Manifeste so, dass sie Ihre bevorzugten Optimierungen enthalten. So können Sie die Empfehlungen prüfen:
- Lesen Sie die Redis-Dokumentation, um die empfohlene Konfiguration für Ihren Kontext zu ermitteln.
- Überlegen Sie, wie die Redis-Arbeitslast in Ihrem Cluster im Vergleich zum folgenden Anwendungsfall verwendet wird. Wenn Ihr Anwendungsfall anders ist, 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 und einem Lese-Schreib-Verhältnis von 4:1 (4 Lesevorgänge pro 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 Anweisungen 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, um sie mit den optimierten Konfigurationen auszuführen.
Nächste Schritte
- Weitere Informationen zur Arbeitslastoptimierung in GKE
- Redis-Cluster in GKE bereitstellen
- Weitere Informationen zu GKE-ComputeClasses
- Informationen zur Optimierung von MySQL-Arbeitslasten finden Sie unter Leistung von MySQL-Arbeitslasten in der GKE optimieren.