Redis 3 主 3 從(helm安裝)
阿新 • • 發佈:2022-05-07
資源清單
本文安裝
Redis 3主3從
依賴K8S叢集
和helm
,本文不提供K8S叢集
和helm
安裝方式
軟體 | 版本 |
---|---|
chart | 7.5.0 |
redis-cluster | 6.2.6 |
kubernetes | v1.20.2 |
helm | v3.4.2 |
helm 安裝 Redis 3主3從
1. 新增 bitnami
的倉庫
$ helm repo add bitnami https://charts.bitnami.com/bitnami
2. 查詢 Redis
資源
$ helm repo update $ helm search repo redis NAME CHART VERSION APP VERSION DESCRIPTION bitnami/redis 16.9.0 6.2.7 Redis(TM) is an open source, advanced key-value... bitnami/redis-cluster 7.5.2 6.2.7 Redis(TM) is an open source, scalable, distribu...
3. 拉取 chart
到本地
$ mkdir /root/redis && cd /root/redis # 拉取 chart 到本地 /root/redis 目錄 $ helm pull bitnami/redis-cluster --version 7.5.0 $ tar -xvf redis-cluster-7.5.0.tgz $ cp redis-cluster/values.yaml ./values-test.yaml # 檢視當前目錄層級 $ tree -L 2 . ├── redis-cluster │ ├── Chart.lock │ ├── charts │ ├── Chart.yaml │ ├── img │ ├── README.md │ ├── templates │ └── values.yaml ├── redis-cluster-7.5.0.tgz └── values-test.yaml
4. 對本地 valuse-test.yaml
修改
$ cat values-test.yaml global: redis: password: "redis123" # 定義 redis 密碼 service: ports: redis: 6379 # 定義 redis 服務埠 redis: livenessProbe: # 修改了 livenessProbe 的探測時間 enabled: true initialDelaySeconds: 60 periodSeconds: 30 timeoutSeconds: 10 successThreshold: 1 failureThreshold: 5 readinessProbe: # 修改了 readinessProbe 的探測時間 enabled: true initialDelaySeconds: 60 periodSeconds: 30 timeoutSeconds: 10 successThreshold: 1 failureThreshold: 5 startupProbe: # 修改了 startupProbe 的探測時間 enabled: false path: / initialDelaySeconds: 300 periodSeconds: 30 timeoutSeconds: 10 failureThreshold: 6 successThreshold: 1 nodeSelector: {"node":"middleware"} # 設定了服務的 node 親和性,確保服務執行在指定的節點 (部分 k8s-node 節點執行中介軟體,部分 k8s-node 節點執行業務) updateJob: nodeSelector: {"node":"middleware"} # 設定了服務的 node 親和性,確保服務執行在指定的節點 (部分 k8s-node 節點執行中介軟體,部分 k8s-node 節點執行業務)
5. 安裝 Redis 叢集
# 建立 test-middleware 名稱空間
$ kubectl create ns test-middleware
# 安裝 Redis 叢集
$ helm -n test-middleware install redis-cluster redis-cluster -f values-test.yaml
## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE
-n 指定 kubernetes 叢集名稱空間
-f 指定使用的配置檔案,檔案中定義的配置可以覆蓋 redis-cluster/values.yaml 檔案中配置
# 檢視部署的 redis-cluster 叢集
$ helm -n test-middleware list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
redis-cluster test-middleware 1 2022-05-06 20:46:11.085219867 +0800 CST deployed redis-cluster-7.5.0 6.2.6
$ kubectl -n test-middleware get pods -l helm.sh/chart=redis-cluster-7.5.0
NAME READY STATUS RESTARTS AGE
redis-cluster-0 1/1 Running 0 17h
redis-cluster-1 1/1 Running 1 17h
redis-cluster-2 1/1 Running 0 17h
redis-cluster-3 1/1 Running 0 17h
redis-cluster-4 1/1 Running 0 17h
redis-cluster-5 1/1 Running 0 17h
> 預設 redis-cluster-0 和 redis-cluster-1 為主從,0主1從
> 預設 redis-cluster-2 和 redis-cluster-3 為主從,0主1從
> 預設 redis-cluster-4 和 redis-cluster-5 為主從,0主1從
> 所以叢集主節點為:redis-cluster-0 redis-cluster-2 redis-cluster-4
> 所以叢集從節點為:redis-cluster-1 redis-cluster-3 redis-cluster-5
> default名稱空間如何訪問此 redis 叢集,ping redis-cluster-[0-5].redis-cluster.test-middleware
6. 連線 Redis 叢集
驗證服務
# 獲取 Redis 叢集的密碼
$ kubectl get secret --namespace uat-middleware redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode
redis123
# 將 Redis 的密碼存到 linux 的環境變數 REDIS_PASSWORD 中
$ export REDIS_PASSWORD=$(kubectl get secret --namespace "demo" redis-service-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)
# 啟動一個臨時容器
$ kubectl run --namespace uat-middleware redis-cluster-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis-cluster:6.2.6-debian-10-r193 -- bash
# 登陸 Redis 叢集
$ redis-cli -c -h redis-service-redis-cluster -a $REDIS_PASSWORD
# 檢視叢集狀態
> cluster info
> cluster nodes
參考文件
https://www.modb.pro/db/112292
https://artifacthub.io/packages/helm/bitnami/redis-cluster/7.5.0