GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So stellen Sie Redis-Cluster auf Kubernetes bereit

Einführung

Redis ist eine beliebte NoSQL-Datenbank und ein In-Memory-Datenspeicher, der mehrere abstrakte Datenstrukturen unterstützt. Dazu gehören Strings, Listen, Hashes, Sets, Streams usw. Redis bietet eine Syntax für den Zugriff auf veränderliche Datenstrukturen, sodass mehrere Prozesse sie gemeinsam lesen und schreiben können.

Ein Redis-Cluster ist eine Reihe von Redis-Instanzen, die Daten automatisch über Knoten verteilen. Die Verwendung eines Clusters gibt Benutzern die Möglichkeit, ihre Datensätze auf Knoten aufzuteilen und die Datenbank weiter auszuführen, selbst wenn einige Knoten ausfallen.

Dieses Tutorial zeigt Ihnen, wie Sie mit ConfigMap und Helm einen Redis-Cluster auf Kubernetes bereitstellen.

Voraussetzungen

  • Ein Kubernetes-Cluster, der aus zwei oder mehr Knoten besteht
  • Helm 3 installiert
  • kubectl 1.14 oder höher installiert

Bereitstellen von Redis auf Kubernetes mit ConfigMap

In den folgenden Schritten wird erläutert, wie Sie den Redis-Cache und einen Pod mit einer Redis-Instanz konfigurieren.

  1. Erstellen Sie mit einem Texteditor eine ConfigMap-YAML-Datei, in der die Redis-Konfiguration gespeichert wird.
nano redis-conf.yaml

2. Geben Sie Ihre Redis-Konfiguration in data.redis-config an Abschnitt.

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-redis-config
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru 

Die obige Beispielkonfiguration legt maxmemory fest Direktive und weist Redis an, maximal 2 MB Speicherplatz für den Datensatz zu verwenden. Die maxmemory-policy Die Direktive definiert das anzuwendende Verfahren, wenn die Speichergrenze erreicht ist. allkeys-lru entfernt zuerst die weniger kürzlich verwendeten (LRU) Schlüssel.

3. Speichern Sie die Datei und beenden Sie sie.

4. Erstellen Sie die ConfigMap, indem Sie die YAML-Datei anwenden.

kubectl apply -f redis-conf.yaml

Das System bestätigt, dass der Vorgang erfolgreich war.

5. Erstellen Sie ein Redis-Pod-Manifest.

nano redis-pod.yaml

6. Geben Sie Ihre Pod-Konfiguration an.

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis:5.0.4
    command:
      - redis-server
      - "/redis-master/redis.conf"
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
    resources:
      limits:
        cpu: "0.1"
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: test-redis-config
        items:
        - key: redis-config
          path: redis.conf

Im obigen Beispiel definiert das Manifest config Volume und mountet es unter /redis-master Verzeichnis auf dem Pod. Die spec.volumes.items Abschnitt macht dann die redis-config verfügbar key aus der zuvor erstellten ConfigMap als redis.conf Datei.

7. Speichern Sie die Datei und beenden Sie.

8. Wenden Sie das Pod-Manifest mit kubectl an.

kubectl apply -f redis-pod.yaml

Das System bestätigt, dass die Pod-Erstellung erfolgreich war.

9. Pod-Status prüfen.

kubectl get pod

10. Geben Sie den erstellten Pod mit kubectl exec ein .

kubectl exec -it redis -- redis-cli

Die Redis-Serverkonsole wird angezeigt:

11. Prüfen Sie mit dem PING-Befehl, ob der Server online ist.

PING

Wenn der Server mit der Konsole kommuniziert, gibt er PONG zurück als Antwort.

Bereitstellen von Redis auf Kubernetes mit Helm Chart

Helm bietet eine schnelle Möglichkeit zum Einrichten eines Redis-Clusters mithilfe eines vorgefertigten Helm-Diagramms.

1. Fügen Sie das Helm-Repository hinzu, das das Redis-Diagramm enthält, das Sie installieren möchten.

helm repo add [repo-name] [repo-address]

Dieser Artikel verwendet das im Bitnami-Repository verfügbare Redis-Diagramm.

2. Lokale Helm-Repositories aktualisieren.

helm repo update

3. Verwenden Sie helm install um das Diagramm zu installieren. Der grundlegende Befehl lautet wie folgt:

helm install redis-test bitnami/redis

Wichtig: Wenn Sie das Diagramm auf Minikube installieren, ist es nicht ungewöhnlich, dass Pods in einem CrashLoopBackOff stecken bleiben Ereignis aufgrund ungebundener Volumenansprüche. Um dies zu verhindern, verwenden Sie --set Option und legen Sie persistence.storageClass fest zu nfs-client für beide Hülsen.

Da Redis standardmäßig mit nicht-administrativen Volume-Berechtigungen bereitgestellt wird, kann der Redis-Pod möglicherweise nicht mit dem Server kommunizieren. Beheben Sie dieses Problem, indem Sie volumePermissions festlegen zu true .

Die letzte helm install Befehl sollte so aussehen:

helm install redis-test --set persistence.storageClass=nfs-client,redis.replicas.persistence.storageClass=nfs-client bitnami/redis --set volumePermissions.enabled=true

4. Exportieren Sie das Redis-Passwort als Umgebungsvariable.

export REDIS_PASSWORD=$(kubectl get secret --namespace default redis-test -o jsonpath="{.data.redis-password}" | base64 --decode)

5. Erstellen Sie einen Redis-Client-Pod, den Sie für den Zugriff auf die Datenbank verwenden.

kubectl run --namespace default redis-client --restart='Never'  --env REDIS_PASSWORD=$REDIS_PASSWORD  --image docker.io/bitnami/redis:6.2.5-debian-10-r63 --command -- sleep infinity

Das System bestätigt die Erstellung des redis-client Pod.

6. Rufen Sie den Client-Pod mit kubectl exec auf .

kubectl exec --tty -i redis-client --namespace default -- bash

Die Client-Konsole wird angezeigt.

7. Verwenden Sie das folgende redis-cli Befehl zum Zugriff auf die Redis-Masterinstanz:

redis-cli -h redis-test-master -a $REDIS_PASSWORD

Die Konsole für die Masterinstanz wird angezeigt.

8. Um auf die Reproduktionen zuzugreifen, verwenden Sie denselben Befehl, aber ändern Sie das Ziel.

redis-cli -h redis-test-replicas -a $REDIS_PASSWORD

9. Verwenden Sie den PING Befehl zum Testen der Verbindung mit dem Server.

PING

Das PONG Antwort bestätigt, dass der Server zuhört.


Ubuntu
  1. So stellen Sie Redis in Docker bereit und führen es aus

  2. So richten Sie einen Kubernetes-Cluster mit Rancher ein

  3. So stellen Sie Elasticsearch auf Kubernetes bereit

  4. So stellen Sie Nginx Load Balancing auf einem Kubernetes-Cluster unter Ubuntu 18.04 LTS bereit

  5. So stellen Sie Ihren ersten Pod in einem Kubernetes-Cluster bereit

So stellen Sie Kubernetes-Cluster auf AWS mit Amazon EKS bereit

So stellen Sie Single Node Kubernetes mit Microk8s auf Ubuntu 20.04 bereit

So richten Sie einen Redis-Cluster in CentOS 8 ein – Teil 3

So stellen Sie CouchDB als Cluster mit Docker bereit

So stellen Sie einen Dienst in einem Docker Swarm-Cluster bereit

So installieren Sie Kubernetes-Cluster auf CentOS 8