在 K8S 中快速部署 Redis Cluster & Redisinsight

為少發表於2022-01-24

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

檢視隨機生成的 Redis 密碼

記住 helm chart deployment 將為 Redis cluster 生成一個隨機密碼。您可以通過以下命令列檢視密碼:

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

自定義 values.yaml

為什麼要自定義?因為預設的 Redis cluster helm chart 配置可能不是您用例的最佳配置。

官方預設配置:

製作 values.yaml 的本地副本。您可以修改 values.yaml 中的內容,並通過執行以下命令將配置更改應用到 Redis cluster

helm upgrade -n redis -f values.yaml staging

values.yaml 中有很多配置可以自定義。下面是一個簡單示例:

cluster:
  init: true
  ## nodes:是包括副本在內的節點總數。
  ## 這意味著將有 3 個主節點和 3 個副本節點
  ##(由於 replicas 預設設定為 1,每個主節點將有 1 個副本)。
  ## 因此,nodes = numberOfMasterNodes + numberOfMasterNodes * replicas
  nodes: 6
  replicas: 1

Redisinsight

通過 Redisinsight 訪問管理 Redis 叢集

儘管我們非常樂意使用 redis-cli 命令列工具與 Redis 叢集進行互動,而且效率很高。但使用 Web UI 來實現同樣的效果更加直觀和高效。我們選擇使用由 RedisLab 開發的 redisinsightWeb UI 可以作為 Deployment 部署到 K8S 中。 以下是 RedisLab 官方文件提供的稍微修改過的版本。主要區別在於增加了 PVC(持久卷宣告),這樣配置就不會因為重啟而丟失:

---
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 中,通過執行以下命令將其部署到 K8S 中:

kubectl apply -f redisinsight.yaml

部署完成後,執行埠轉發:

kubectl port-forward deployment/redisinsight -n redis 8001

然後,您可以通過在 Web 瀏覽器中開啟 http://localhost:8001 來訪問 redisinsight Web UI。 您可以在 UI 中單擊 Connect to a Redis Database 按鈕,將顯示以下彈出視窗:

Host將是 K8S 控制檯中可用的 redis cluster serviceIP值。Port 為預設的 redis6379Username 預設值為 defaultName 可以是你選擇的任何名字。如前一節所述,需要通過kubectl 命令列從 config map 中檢索密碼。點選 ADD REDIS DATABASE 按鈕後,它會提示你選擇所有或任何一個 Redis cluster 成員作為種子節點連線到叢集。你可以選擇全部或其中任何一個。一旦連線配置完成,你應該能夠訪問一個功能齊全的 web UI 來檢視和管理你剛剛安裝的Redis cluster

正如您在上面的螢幕截圖中看到的那樣,我們剛剛配置的 Redis 叢集中有 3 個主節點和 3 個從節點。它還顯示每個分割槽中有多少 key 以及正在使用多少 memory

更多

在 K8S 中快速部署 Redis Cluster & Redisinsight

公眾號:黑客下午茶

相關文章