GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come distribuire il cluster Redis su Kubernetes

Introduzione

Redis è un popolare database NoSQL e un archivio dati in memoria che supporta più strutture dati astratte. Questi includono stringhe, elenchi, hash, set, flussi, ecc. Redis fornisce la sintassi per l'accesso a strutture di dati mutabili, consentendo a più processi di leggerle e scriverle in modo condiviso.

Un cluster Redis è un insieme di istanze Redis che suddivide automaticamente i dati tra i nodi. L'utilizzo di un cluster offre agli utenti la possibilità di dividere i propri set di dati tra i nodi e continuare a eseguire il database anche quando alcuni nodi si guastano.

Questo tutorial ti mostrerà come distribuire un cluster Redis su Kubernetes usando ConfigMap e Helm.

Prerequisiti

  • Un cluster Kubernetes composto da due o più nodi
  • Timone 3 installato
  • kubectl 1.14 o successivo installato

Distribuzione di Redis su Kubernetes con ConfigMap

I passaggi seguenti spiegano come configurare la cache Redis e un pod contenente un'istanza Redis.

  1. Utilizzando un editor di testo, crea un YAML ConfigMap che memorizzerà la configurazione Redis.
nano redis-conf.yaml

2. Specifica la tua configurazione Redis in data.redis-config sezione.

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

La configurazione di esempio sopra imposta la maxmemory direttiva e indica a Redis di utilizzare il massimo di 2 MB di spazio di archiviazione per il set di dati. La maxmemory-policy definisce la procedura da applicare al raggiungimento del limite di memoria. allkeys-lru rimuove prima le chiavi usate meno di recente (LRU).

3. Salva il file ed esci.

4. Crea la ConfigMap applicando il file YAML.

kubectl apply -f redis-conf.yaml

Il sistema conferma che l'operazione è andata a buon fine.

5. Crea un manifest del pod Redis.

nano redis-pod.yaml

6. Specifica la configurazione del pod.

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

Nell'esempio sopra, il manifest definisce config volume e lo monta su /redis-master directory sul pod. Il spec.volumes.items la sezione espone quindi il redis-config chiave dalla ConfigMap precedentemente creata come redis.conf file.

7. Salva il file ed esci.

8. Applica il manifest del pod con kubectl.

kubectl apply -f redis-pod.yaml

Il sistema conferma che la creazione del pod è andata a buon fine.

9. Controlla lo stato del pod.

kubectl get pod

10. Inserisci il pod creato con kubectl exec .

kubectl exec -it redis -- redis-cli

Viene visualizzata la console del server Redis:

11. Utilizzare il comando PING per verificare se il server è online.

PING

Se il server comunica con la console, restituisce PONG come risposta.

Distribuzione di Redis su Kubernetes con Helm Chart

Helm fornisce un modo rapido per configurare un cluster Redis utilizzando un grafico Helm predefinito.

1. Aggiungi il repository Helm contenente il grafico Redis che desideri installare.

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

Questo articolo utilizza il grafico Redis disponibile nel repository Bitnami.

2. Aggiorna i repository Helm locali.

helm repo update

3. Usa helm install per installare il grafico. Il comando di base è il seguente:

helm install redis-test bitnami/redis

Importante: Se installi il grafico su Minikube, non è insolito che i pod si blocchino in un CrashLoopBackOff evento dovuto a richieste di volume non vincolate. Per evitarlo, usa il --set opzione e imposta persistence.storageClass a nfs-client per entrambi i baccelli.

Poiché Redis viene distribuito con autorizzazioni di volume non amministrative per impostazione predefinita, il pod Redis potrebbe non essere in grado di comunicare con il server. Risolvi questo problema impostando volumePermissions a true .

L'ultima helm install il comando dovrebbe assomigliare a questo:

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

4. Esporta la password Redis come variabile di ambiente.

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

5. Crea un client pod Redis che utilizzerai per accedere al database.

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

Il sistema conferma la creazione del redis-client pod.

6. Inserisci il client pod con kubectl exec .

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

Viene visualizzata la console del client.

7. Usa il seguente redis-cli comando per accedere all'istanza master Redis:

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

Viene visualizzata la console per l'istanza master.

8. Per accedere alle repliche, utilizzare lo stesso comando, ma modificare la destinazione.

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

9. Usa il PING comando per testare la connessione con il server.

PING

Il PONG la risposta conferma che il server è in ascolto.


Ubuntu
  1. Come distribuire ed eseguire Redis in Docker

  2. Come configurare un cluster Kubernetes con Rancher

  3. Come distribuire Elasticsearch su Kubernetes

  4. Come distribuire Nginx Load Balancing su Kubernetes Cluster su Ubuntu 18.04 LTS

  5. Come distribuire il tuo primo pod su un cluster Kubernetes

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Come distribuire Kubernetes a nodo singolo con Microk8s su Ubuntu 20.04

Come configurare un cluster Redis in CentOS 8 – Parte 3

Come distribuire CouchDB come cluster con Docker

Come distribuire un servizio in un cluster Docker Swarm

Come installare il cluster Kubernetes su CentOS 8