Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

Redis in 5 Minuten bereitstellen

Diese Anleitung begleitet Sie Schritt für Schritt bei der Bereitstellung Ihres ersten Redis-Clusters auf Hikube, vom YAML-Manifest bis zu den ersten Verbindungstests.


Ziele

Am Ende dieser Anleitung haben Sie:

  • Einen Redis-Cluster auf Hikube bereitgestellt
  • Eine Architektur bestehend aus einem Master und Replikas für Hochverfügbarkeit
  • Redis Sentinel konfiguriert für Auto-Failover
  • Einen sicheren Redis-Zugriff mit Ihren Authentifizierungsdaten
  • Einen persistenten Speicher zur Datenaufbewahrung über Neustarts hinaus

Voraussetzungen

Stellen Sie vor dem Start sicher, dass Sie Folgendes haben:

  • kubectl konfiguriert mit Ihrer Hikube-Kubeconfig
  • Administratorrechte auf Ihrem Tenant
  • Einen dedizierten Namespace für Ihren Redis-Cluster
  • redis-cli auf Ihrem Rechner installiert (optional, für Verbindungstests)

Schritt 1: Redis-Manifest erstellen

Erstellen Sie eine Datei redis.yaml mit folgender Konfiguration:

redis.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Redis
metadata:
name: example
spec:
# Anzahl der Redis-Replikas (Hochverfügbarkeit wenn >1)
replicas: 3

# Vordefiniertes Ressourcenprofil (nano, micro, small, medium, large, xlarge, 2xlarge)
resourcesPreset: nano

# Oder Ressourcen explizit definieren (ersetzt resourcesPreset)
resources:
cpu: 3000m
memory: 3Gi

# Größe der persistenten Festplatte pro Instanz
size: 1Gi
storageClass: ""

# Redis-Authentifizierung aktivieren
authEnabled: true

# Redis-Service extern freigeben
external: true
Tipp

Wenn resources definiert ist, wird der Wert von resourcesPreset ignoriert. Konsultieren Sie die API-Referenz für die vollständige Liste der verfügbaren Presets.


Schritt 2: Redis-Cluster bereitstellen

Wenden Sie das Manifest an und überprüfen Sie, dass die Bereitstellung startet:

# Manifest anwenden
kubectl apply -f redis.yaml

Überprüfen Sie den Clusterstatus (kann 1-2 Minuten dauern):

kubectl get redis

Erwartetes Ergebnis:

NAME      READY   AGE     VERSION
example True 1m39s 0.10.0

Schritt 3: Überprüfung der Pods

Überprüfen Sie, dass alle Pods den Status Running haben:

kubectl get po -o wide | grep redis

Erwartetes Ergebnis:

rfr-redis-example-0                               2/2     Running     0     7m7s    10.244.2.109   gld-csxhk-006   <none>   <none>
rfr-redis-example-1 2/2 Running 0 7m7s 10.244.2.114 luc-csxhk-005 <none> <none>
rfr-redis-example-2 2/2 Running 0 7m7s 10.244.2.111 plo-csxhk-004 <none> <none>
rfs-redis-example-7b65c79ccb-dkqqz 1/1 Running 0 7m7s 10.244.2.112 luc-csxhk-005 <none> <none>
rfs-redis-example-7b65c79ccb-kvjt8 1/1 Running 0 7m7s 10.244.2.108 gld-csxhk-006 <none> <none>
rfs-redis-example-7b65c79ccb-xwk7v 1/1 Running 0 7m7s 10.244.2.110 plo-csxhk-004 <none> <none>

Mit replicas: 3 erhalten Sie 6 Pods auf verschiedenen Rechenzentren verteilt:

PräfixRolleAnzahl
rfr-redis-example-*Redis (Master + Replikas)3
rfs-redis-example-*Redis Sentinel (Überwachung und Auto-Failover)3

Schritt 4: Anmeldedaten abrufen

Wenn authEnabled: true, wird ein Passwort automatisch in einem Kubernetes-Secret generiert:

kubectl get secret redis-example-auth -o json | jq -r '.data | to_entries[] | "\(.key): \(.value|@base64d)"'

Erwartetes Ergebnis:

password: QkP9bhppEFCQcXIXLzEAhAUBlMYEVFNZ

Schritt 5: Verbindung und Tests

Externer Zugriff (wenn external: true)

Rufen Sie die externe IP des LoadBalancers ab:

kubectl get svc | grep redis
redis-example-external-lb            LoadBalancer   10.96.156.151   91.223.132.41   6379/TCP    13m
redis-example-metrics ClusterIP 10.96.58.67 <none> 9121/TCP 13m
rfr-redis-example ClusterIP None <none> 9121/TCP 13m
rfrm-redis-example ClusterIP 10.96.109.194 <none> 6379/TCP 13m
rfrs-redis-example ClusterIP 10.96.118.28 <none> 6379/TCP 13m
rfs-redis-example ClusterIP 10.96.176.169 <none> 26379/TCP 13m

Der Service redis-example-external-lb stellt Redis über die externe IP 91.223.132.41 bereit.

Zugriff über Port-Forward (wenn external: false)

kubectl port-forward svc/rfrm-redis-example 6379:6379 &

Tests mit redis-cli

# Passwort abrufen
REDIS_PASSWORD=$(kubectl get secret redis-example-auth -o jsonpath="{.data.password}" | base64 -d)

# Test PING
redis-cli -h 91.223.132.41 -p 6379 -a "$REDIS_PASSWORD" ping
# PONG

# Schlüssel erstellen
redis-cli -h 91.223.132.41 -p 6379 -a "$REDIS_PASSWORD" SET hello "hikube"
# OK

# Schlüssel lesen
redis-cli -h 91.223.132.41 -p 6379 -a "$REDIS_PASSWORD" GET hello
# "hikube"
Hinweis

Wenn Sie Port-Forward verwenden, ersetzen Sie 91.223.132.41 durch 127.0.0.1 in den obigen Befehlen. Es wird empfohlen, die Datenbank nicht extern freizugeben, wenn dies nicht erforderlich ist.


Schritt 6: Schnelle Fehlerbehebung

Pods im CrashLoopBackOff

# Logs des fehlerhaften Pods prüfen
kubectl logs rfr-redis-example-0

# Events prüfen
kubectl describe pod rfr-redis-example-0

Häufige Ursachen: Unzureichender Speicher (resources.memory zu niedrig), Speichervolumen voll.

Redis nicht erreichbar

# Prüfen, ob der Service existiert
kubectl get svc | grep redis

# Prüfen, ob der LoadBalancer eine externe IP hat
kubectl describe svc redis-example-external-lb

Häufige Ursachen: external: false im Manifest, LoadBalancer wartet auf IP-Zuweisung.

Sentinel erkennt den Master nicht

# Sentinel-Logs prüfen
kubectl logs rfs-redis-example-7b65c79ccb-dkqqz

# Sentinel-Topologie prüfen
kubectl exec -it rfs-redis-example-7b65c79ccb-dkqqz -- redis-cli -p 26379 SENTINEL masters

Allgemeine Diagnosebefehle

# Letzte Events im Namespace
kubectl get events --sort-by=.metadata.creationTimestamp

# Detaillierter Status des Redis-Clusters
kubectl describe redis example

Schritt 7: Bereinigung

Um die Testressourcen zu entfernen:

kubectl delete -f redis.yaml
Warnung

Diese Aktion löscht den Redis-Cluster und alle zugehörigen Daten. Dieser Vorgang ist unwiderruflich.


Zusammenfassung

Sie haben bereitgestellt:

  • Einen Redis-Cluster mit 3 Replikas auf verschiedenen Rechenzentren verteilt
  • 3 Sentinel-Pods für Überwachung und Auto-Failover
  • Einen sicheren Zugriff mit automatisch generiertem Passwort
  • Einen persistenten Speicher für die Datenhaltbarkeit

Nächste Schritte

  • API-Referenz: Vollständige Konfiguration aller Redis-Optionen
  • Übersicht: Detaillierte Architektur und Anwendungsfälle für Redis auf Hikube