GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nasadit Redis Cluster na Kubernetes

Úvod

Redis je populární databáze NoSQL a úložiště dat v paměti podporující více abstraktních datových struktur. Patří mezi ně řetězce, seznamy, hash, sady, proudy atd. Redis poskytuje syntaxi pro přístup k proměnným datovým strukturám, což umožňuje více procesům je číst a zapisovat sdíleným způsobem.

Redis Cluster je sada instancí Redis, která automaticky rozdělí data mezi uzly. Použití clusteru dává uživatelům možnost rozdělit své datové sady mezi uzly a udržovat databázi v chodu, i když některé uzly selžou.

Tento kurz vám ukáže, jak nasadit Redis Cluster na Kubernetes pomocí ConfigMap a Helm.

Předpoklady

  • Cluster Kubernetes sestávající ze dvou nebo více uzlů
  • Nainstalován Helm 3
  • nainstalován kubectl 1.14 nebo vyšší

Nasazení Redis na Kubernetes s ConfigMap

Následující kroky vysvětlují, jak nakonfigurovat mezipaměť Redis a modul obsahující instanci Redis.

  1. Pomocí textového editoru vytvořte ConfigMap YAML, do které bude uložena konfigurace Redis.
nano redis-conf.yaml

2. Zadejte konfiguraci Redis v data.redis-config sekce.

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

Výše uvedená příkladová konfigurace nastavuje maxmemory a říká Redis, aby pro datovou sadu použila maximálně 2 MB úložiště. maxmemory-policy Direktiva definuje proceduru, která se použije při dosažení limitu paměti. allkeys-lru nejprve odstraní méně nedávno použité (LRU) klíče.

3. Uložte soubor a ukončete.

4. Vytvořte ConfigMap použitím souboru YAML.

kubectl apply -f redis-conf.yaml

Systém potvrdí, že operace byla úspěšná.

5. Vytvořte manifest Redis pod.

nano redis-pod.yaml

6. Zadejte konfiguraci modulu.

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

Ve výše uvedeném příkladu manifest definuje config svazku a připojí jej na /redis-master adresář na podu. spec.volumes.items sekce pak odkryje redis-config klíč z dříve vytvořené ConfigMap jako redis.conf soubor.

7. Uložte soubor a ukončete.

8. Použijte manifest pod pomocí kubectl.

kubectl apply -f redis-pod.yaml

Systém potvrdí, že vytvoření modulu bylo úspěšné.

9. Zkontrolujte stav pod.

kubectl get pod

10. Zadejte vytvořený modul pomocí kubectl exec .

kubectl exec -it redis -- redis-cli

Zobrazí se konzola serveru Redis:

11. Pomocí příkazu PING zkontrolujte, zda je server online.

PING

Pokud server komunikuje s konzolí, vrátí PONG jako odpověď.

Nasazení Redis na Kubernetes s Helm Chart

Helm poskytuje rychlý způsob nastavení clusteru Redis pomocí předem připraveného Helm diagramu.

1. Přidejte úložiště Helm obsahující graf Redis, který chcete nainstalovat.

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

Tento článek používá graf Redis dostupný v úložišti Bitnami.

2. Aktualizujte místní úložiště Helm.

helm repo update

3. Použijte helm install k instalaci grafu. Základní příkaz je následující:

helm install redis-test bitnami/redis

Důležité: Pokud nainstalujete graf na Minikube, není neobvyklé, že pody uvíznou v CrashLoopBackOff událost z důvodu nesvázaných objemových nároků. Abyste tomu zabránili, použijte --set a nastavte persistence.storageClass na nfs-client pro oba lusky.

Vzhledem k tomu, že Redis je standardně nasazen s neadministrativními oprávněními k svazku, modul Redis nemusí být schopen komunikovat se serverem. Tento problém vyřešíte nastavením volumePermissions true .

Poslední helm install příkaz by měl vypadat takto:

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

4. Exportujte heslo Redis jako proměnnou prostředí.

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

5. Vytvořte klientský modul Redis, který budete používat pro přístup k databázi.

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

Systém potvrdí vytvoření redis-client pod.

6. Zadejte klientský modul pomocí kubectl exec .

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

Zobrazí se klientská konzole.

7. Použijte následující redis-cli příkaz pro přístup k hlavní instanci Redis:

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

Zobrazí se konzola hlavní instance.

8. Pro přístup k replikám použijte stejný příkaz, ale změňte cíl.

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

9. Použijte PING příkaz k otestování spojení se serverem.

PING

PONG odpověď potvrzuje, že server naslouchá.


Ubuntu
  1. Jak nasadit a spustit Redis v Dockeru

  2. Jak nasadit Nginx Load Balancing na Kubernetes Cluster na Ubuntu 18.04 LTS

  3. Jak nasadit svůj první modul na clusteru Kubernetes

  1. Jak nastavit Kubernetes Cluster pomocí Rancher

  2. Jak nasadit Elasticsearch na Kubernetes

  3. Jak nasadit instanci WordPress na Kubernetes

  1. Jak nainstalovat Kubernetes Cluster na CentOS 7

  2. Jak nasadit RabbitMQ na Kubernetes

  3. Jak nasadit PostgreSQL na Kubernetes