在 K8S 中快速部署 Redis Cluster & Redisinsight
Redis Cluster
部署
使用 Bitnami helm chart 在 K8S redis 命名空間中一鍵部署 Redis cluster 。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install -n redis staging bitnami/redis-cluster
查看隨機(jī)生成的 Redis 密碼
記住 helm chart deployment 將為 Redis cluster 生成一個(gè)隨機(jī)密碼。您可以通過以下命令行查看密碼:
export REDIS_PASSWORD=$(kubectl get secret --namespace redis staging-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)
自定義 values.yaml
為什么要自定義?因?yàn)槟J(rèn)的 Redis cluster helm chart 配置可能不是您用例的最佳配置。
官方默認(rèn)配置:
??https://github.com/bitnami/charts/blob/master/bitnami/redis-cluster/values.yaml??
制作 values.yaml 的本地副本。您可以修改 values.yaml 中的內(nèi)容,并通過運(yùn)行以下命令將配置更改應(yīng)用到 Redis cluster:
helm upgrade -n redis -f values.yaml staging
values.yaml 中有很多配置可以自定義。下面是一個(gè)簡單示例:
cluster:
init: true
## nodes:是包括副本在內(nèi)的節(jié)點(diǎn)總數(shù)。
## 這意味著將有 3 個(gè)主節(jié)點(diǎn)和 3 個(gè)副本節(jié)點(diǎn)
##(由于 replicas 默認(rèn)設(shè)置為 1,每個(gè)主節(jié)點(diǎn)將有 1 個(gè)副本)。
## 因此,nodes = numberOfMasterNodes + numberOfMasterNodes * replicas
nodes: 6
replicas: 1
Redisinsight
通過 Redisinsight 訪問管理 Redis 集群
盡管我們非常樂意使用 redis-cli 命令行工具與 Redis 集群進(jìn)行交互,而且效率很高。但使用 Web UI 來實(shí)現(xiàn)同樣的效果更加直觀和高效。我們選擇使用由 RedisLab 開發(fā)的 redisinsight。 Web UI 可以作為 Deployment 部署到 K8S 中。以下是 RedisLab 官方文檔提供的稍微修改過的版本。主要區(qū)別在于增加了 PVC(持久卷聲明),這樣配置就不會(huì)因?yàn)橹貑⒍鴣G失:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redisinsight-pv-claim
labels:
app: redisinsight
namespace: redis
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisinsight
namespace: redis
labels:
app: redisinsight
spec:
replicas: 1
selector:
matchLabels:
app: redisinsight
template:
metadata:
labels:
app: redisinsight
spec:
containers:
- name: redisinsight
image: redislabs/redisinsight:1.9.0
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 0
volumeMounts:
- name: db
mountPath: /db
ports:
- containerPort: 8001
protocol: TCP
volumes:
- name: db
persistentVolumeClaim:
claimName: redisinsight-pv-claim
將上述 YAML 保存到 redisinsight.yaml 中,通過運(yùn)行以下命令將其部署到 K8S 中:
kubectl apply -f redisinsight.yaml
部署完成后,運(yùn)行端口轉(zhuǎn)發(fā):
kubectl port-forward deployment/redisinsight -n redis 8001
然后,您可以通過在 Web 瀏覽器中打開 http://localhost:8001 來訪問 redisinsight Web UI。您可以在 UI 中單擊 Connect to a Redis Database 按鈕,將顯示以下彈出窗口:
Host將是 K8S 控制臺(tái)中可用的 redis cluster service 的 IP值。Port 為默認(rèn)的 redis 端口 6379。Username 默認(rèn)值為 default。Name 可以是你選擇的任何名字。如前一節(jié)所述,需要通過kubectl 命令行從 config map 中檢索密碼。點(diǎn)擊 ADD REDIS DATABASE 按鈕后,它會(huì)提示你選擇所有或任何一個(gè) Redis cluster 成員作為種子節(jié)點(diǎn)連接到集群。你可以選擇全部或其中任何一個(gè)。一旦連接配置完成,你應(yīng)該能夠訪問一個(gè)功能齊全的 web UI 來查看和管理你剛剛安裝的Redis cluster。
正如您在上面的屏幕截圖中看到的那樣,我們剛剛配置的 Redis 集群中有 3 個(gè)主節(jié)點(diǎn)和 3 個(gè)從節(jié)點(diǎn)。它還顯示每個(gè)分區(qū)中有多少 key 以及正在使用多少 memory。