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
posted @ 2022-05-07 14:40  evescn  阅读(2343)  评论(0编辑  收藏  举报