Ú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.
- 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á.