GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment déployer un cluster Redis sur Kubernetes

Présentation

Redis est une base de données NoSQL populaire et un magasin de données en mémoire prenant en charge plusieurs structures de données abstraites. Ceux-ci incluent des chaînes, des listes, des hachages, des ensembles, des flux, etc. Redis fournit une syntaxe pour accéder aux structures de données mutables, permettant à plusieurs processus de les lire et de les écrire de manière partagée.

Un cluster Redis est un ensemble d'instances Redis qui répartit automatiquement les données entre les nœuds. L'utilisation d'un cluster donne aux utilisateurs la possibilité de diviser leurs ensembles de données entre les nœuds et de continuer à exécuter la base de données même lorsque certains nœuds échouent.

Ce didacticiel vous montrera comment déployer un cluster Redis sur Kubernetes à l'aide de ConfigMap et Helm.

Prérequis

  • Un cluster Kubernetes composé de deux nœuds ou plus
  • Helm 3 installé
  • kubectl 1.14 ou supérieur installé

Déployer Redis sur Kubernetes avec ConfigMap

Les étapes suivantes expliquent comment configurer le cache Redis et un pod contenant une instance Redis.

  1. À l'aide d'un éditeur de texte, créez un YAML ConfigMap qui stockera la configuration Redis.
nano redis-conf.yaml

2. Spécifiez votre configuration Redis dans le data.redis-config rubrique.

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

L'exemple de configuration ci-dessus définit la maxmemory directive et indique à Redis d'utiliser le maximum de 2 Mo de stockage pour l'ensemble de données. La maxmemory-policy La directive définit la procédure à appliquer lorsque la limite de mémoire est atteinte. allkeys-lru supprime d'abord les clés les moins récemment utilisées (LRU).

3. Enregistrez le fichier et quittez.

4. Créez le ConfigMap en appliquant le fichier YAML.

kubectl apply -f redis-conf.yaml

Le système confirme que l'opération a réussi.

5. Créez un manifeste de pod Redis.

nano redis-pod.yaml

6. Spécifiez la configuration de votre 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

Dans l'exemple ci-dessus, le manifeste définit config volume et le monte sur /redis-master répertoire sur le pod. Les spec.volumes.items section expose ensuite le redis-config clé du ConfigMap créé précédemment en tant que redis.conf fichier.

7. Enregistrez le fichier et quittez.

8. Appliquez le manifeste du pod avec kubectl.

kubectl apply -f redis-pod.yaml

Le système confirme que la création du pod a réussi.

9. Vérifiez l'état du module.

kubectl get pod

10. Entrez le pod créé avec kubectl exec .

kubectl exec -it redis -- redis-cli

La console du serveur Redis apparaît :

11. Utilisez la commande PING pour vérifier si le serveur est en ligne.

PING

Si le serveur communique avec la console, il renvoie PONG comme réponse.

Déployer Redis sur Kubernetes avec Helm Chart

Helm fournit un moyen rapide de configurer un cluster Redis à l'aide d'un graphique Helm prédéfini.

1. Ajoutez le référentiel Helm contenant la charte Redis que vous souhaitez installer.

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

Cet article utilise le graphique Redis disponible dans le dépôt Bitnami.

2. Mettez à jour les référentiels Helm locaux.

helm repo update

3. Utilisez helm install pour installer le tableau. La commande de base est la suivante :

helm install redis-test bitnami/redis

Important : Si vous installez le graphique sur Minikube, il n'est pas rare que les pods restent bloqués dans un CrashLoopBackOff événement dû à des réclamations de volume non consolidé. Pour éviter cela, utilisez le --set option et définissez persistence.storageClass à nfs-client pour les deux gousses.

Étant donné que Redis est déployé avec des autorisations de volume non administratives par défaut, le pod Redis peut ne pas être en mesure de communiquer avec le serveur. Résolvez ce problème en définissant volumePermissions à true .

L'helm install la commande devrait ressembler à ceci :

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

4. Exportez le mot de passe Redis en tant que variable d'environnement.

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

5. Créez un pod client Redis que vous utiliserez pour accéder à la base de données.

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

Le système confirme la création du redis-client cosse.

6. Entrez le pod client avec kubectl exec .

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

La console client apparaît.

7. Utilisez le redis-cli suivant commande pour accéder à l'instance maître Redis :

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

La console de l'instance maître s'affiche.

8. Pour accéder aux répliques, utilisez la même commande, mais modifiez la cible.

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

9. Utilisez le PING commande pour tester la connexion avec le serveur.

PING

Le PONG la réponse confirme que le serveur écoute.


Ubuntu
  1. Comment déployer et exécuter Redis dans Docker

  2. Comment configurer un cluster Kubernetes avec Rancher

  3. Comment déployer Elasticsearch sur Kubernetes

  4. Comment déployer l'équilibrage de charge Nginx sur le cluster Kubernetes sur Ubuntu 18.04 LTS

  5. Comment déployer votre premier pod sur un cluster Kubernetes

Comment déployer un cluster Kubernetes sur AWS avec Amazon EKS

Comment déployer Kubernetes à nœud unique avec Microk8s sur Ubuntu 20.04

Comment configurer un cluster Redis dans CentOS 8 - Partie 3

Comment déployer CouchDB en tant que cluster avec Docker

Comment déployer un service sur un cluster Docker Swarm

Comment installer le cluster Kubernetes sur CentOS 8