GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo implementar Redis Cluster en Kubernetes

Introducción

Redis es una base de datos NoSQL popular y un almacén de datos en memoria que admite múltiples estructuras de datos abstractas. Estos incluyen cadenas, listas, hashes, conjuntos, flujos, etc. Redis proporciona sintaxis para acceder a estructuras de datos mutables, lo que permite que múltiples procesos los lean y escriban de forma compartida.

Un clúster de Redis es un conjunto de instancias de Redis que fragmenta automáticamente los datos en los nodos. El uso de un clúster brinda a los usuarios la capacidad de dividir sus conjuntos de datos entre nodos y seguir ejecutando la base de datos incluso cuando fallan algunos nodos.

Este tutorial le mostrará cómo implementar un clúster de Redis en Kubernetes mediante ConfigMap y Helm.

Requisitos previos

  • Un clúster de Kubernetes que consta de dos o más nodos
  • Helm 3 instalado
  • kubectl 1.14 o superior instalado

Implementación de Redis en Kubernetes con ConfigMap

Los siguientes pasos explican cómo configurar la caché de Redis y un pod que contiene una instancia de Redis.

  1. Usando un editor de texto, cree un ConfigMap YAML que almacenará la configuración de Redis.
nano redis-conf.yaml

2. Especifique su configuración de Redis en data.redis-config sección.

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

La configuración de ejemplo anterior establece la maxmemory y le dice a Redis que use el máximo de 2 MB de almacenamiento para el conjunto de datos. La maxmemory-policy La directiva define el procedimiento que se aplicará cuando se alcance el límite de memoria. allkeys-lru primero elimina las claves usadas menos recientemente (LRU).

3. Guarde el archivo y salga.

4. Cree el ConfigMap aplicando el archivo YAML.

kubectl apply -f redis-conf.yaml

El sistema confirma que la operación fue exitosa.

5. Cree un manifiesto de pod de Redis.

nano redis-pod.yaml

6. Especifique la configuración de su módulo.

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

En el ejemplo anterior, el manifiesto define config volumen y lo monta en /redis-master directorio en el pod. spec.volumes.items luego expone el redis-config clave del ConfigMap creado previamente como redis.conf archivo.

7. Guarde el archivo y salga.

8. Aplique el manifiesto del pod con kubectl.

kubectl apply -f redis-pod.yaml

El sistema confirma que la creación del pod fue exitosa.

9. Verifique el estado de la cápsula.

kubectl get pod

10. Ingrese al pod creado con kubectl exec .

kubectl exec -it redis -- redis-cli

Aparece la consola del servidor Redis:

11. Use el comando PING para verificar si el servidor está en línea.

PING

Si el servidor se comunica con la consola, devuelve PONG como respuesta.

Implementación de Redis en Kubernetes con Helm Chart

Helm proporciona una forma rápida de configurar un clúster de Redis mediante un gráfico de Helm prefabricado.

1. Agregue el repositorio de Helm que contiene el gráfico de Redis que desea instalar.

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

Este artículo utiliza el gráfico de Redis disponible en el repositorio de Bitnami.

2. Actualice los repositorios locales de Helm.

helm repo update

3. Usa helm install para instalar el gráfico. El comando básico es el siguiente:

helm install redis-test bitnami/redis

Importante: Si instala el gráfico en Minikube, no es raro que los pods se atasquen en un CrashLoopBackOff evento debido a reclamos de volumen no consolidado. Para evitar esto, use el --set y configure persistence.storageClass a nfs-client para ambas vainas.

Dado que Redis se implementa con permisos de volumen no administrativos de forma predeterminada, es posible que el pod de Redis no pueda comunicarse con el servidor. Resuelva este problema configurando volumePermissions a true .

La helm install final El comando debería verse así:

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

4. Exporte la contraseña de Redis como una variable de entorno.

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

5. Cree un pod de cliente de Redis que usará para acceder a la base de datos.

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

El sistema confirma la creación del redis-client vaina.

6. Ingrese al pod de cliente con kubectl exec .

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

Aparece la consola del cliente.

7. Utilice el siguiente redis-cli comando para acceder a la instancia maestra de Redis:

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

Se muestra la consola de la instancia maestra.

8. Para acceder a las réplicas, use el mismo comando, pero modifique el destino.

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

9. Usa el PING comando para probar la conexión con el servidor.

PING

El PONG la respuesta confirma que el servidor está escuchando.


Ubuntu
  1. Cómo implementar y ejecutar Redis en Docker

  2. Cómo configurar un clúster de Kubernetes con Rancher

  3. Cómo implementar Elasticsearch en Kubernetes

  4. Cómo implementar el equilibrio de carga de Nginx en el clúster de Kubernetes en Ubuntu 18.04 LTS

  5. Cómo implementar su primer pod en un clúster de Kubernetes

Cómo implementar el clúster de Kubernetes en AWS con Amazon EKS

Cómo implementar Kubernetes de un solo nodo con Microk8s en Ubuntu 20.04

Cómo configurar un clúster de Redis en CentOS 8 - Parte 3

Cómo implementar CouchDB como un clúster con Docker

Cómo implementar un servicio en un clúster de Docker Swarm

Cómo instalar el clúster de Kubernetes en CentOS 8