helm 安装 Redis 3 主 3 从
目录
资源清单
本文安装
Redis 3主3从
依赖K8S集群
和helm
,本文不提供K8S集群
和helm
安装方式
使用此文档部署,需要自行解决 storageClass 问题 ( NFS, ceph, openebs等 )
软件 | 版本 |
---|---|
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-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
修改
- 查看 集群 storageclasses
$ kubectl get storageclasses
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-dynamic-class (default) nfs-provisioner-01 Delete Immediate false 14d
- 修改配置
$ cat values-test.yaml
## 全局配置中未定义 storageClass: "",会使用集群默认的 storageClass,
## 此处 k8s 集群的默认 storageClass 为 nfs,底层为 华为云 SFS Turbo
## 使用此文档部署,需要自行解决 storageClass 问题 (ceph, nfs, 公有云提供的 nfs)
global:
storageClass: ""
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