在一次偶然的更新中,不慎将redis集群的pod节点给干掉了,自动生成新节点后发现开始报错了,稍微研究了下发现是节点IP变了,正好redis6.0发布了,索性来一次升级+重新部署集群
1、更新redis镜像
# docker pull redis

2、删除原redis数据目录

重新生成的redis集群的pod,IP全部都变了,要么修改所有数据目录的nodes.conf,要么重新部署集群,我这里采取第二个“要么”
删除所有数据目录里面的appendonly.aof、dump.rdb和nodes.conf
# rm -rf /redis/pv{1..6}/appendonly.aof
# rm -rf /redis/pv{1..6}/dump.rdb
# rm -rf /redis/pv{1..6}/nodes.conf
3、删除redis里面的数据
kubectl exec -it redis-app-0 -- "redis-cli" 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379>

4、删除redis的pod节点
# kubectl delete pod redis-app-0 redis-app-1 redis-app-2 redis-app-3 redis-app-4 redis-app-5

5、重新创建redis-trib容器
# kubectl run -i --tty redistrib --image=centos:7 /bin/bash # yum install wget -y # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # yum install redis-trib bind-utils -y
6、重新部署集群
redis-trib create --replicas 1 \dig +short redis-app-0.redis-service.default.svc.cluster.local
:6379 \dig +short redis-app-1.redis-service.default.svc.cluster.local
:6379 \dig +short redis-app-2.redis-service.default.svc.cluster.local
:6379 \dig +short redis-app-3.redis-service.default.svc.cluster.local
:6379 \dig +short redis-app-4.redis-service.default.svc.cluster.local
:6379 \dig +short redis-app-5.redis-service.default.svc.cluster.local
:6379

去nodes.conf里面看下新的IP是否跟集群IP一致就OK了
还有一种方法可以解决,是在rancher文档里面看到的,链接如下:
https://rancher.com/blog/2019/deploying-redis-cluster

使用update-node.sh的方法
有时间了再研究这个吧