kubernetes 上的 Redis 集群

Redis cluster on kubernetes

我正在尝试在 Kubernetes 上设置 redis 集群。我的要求之一是我的 redis 集群应该在 kubernetes 集群重启(由于电源故障等问题)的情况下具有弹性。

我已经尝试过 Kubernetes statefulset 和部署。
在 statefulset 的情况下,在重新启动时,一组新的 IP 地址被分配给 Pods,并且由于 redis 集群在 IP 地址上工作,它无法连接到其他 redis 实例并再次形成集群。
如果通过单个 redis 实例部署使用静态 IP 的服务,即使我使用静态服务 IP 地址创建集群,redis 也会再次存储 Pod 的 IP,因此在重新启动时它无法连接到其他 redis 实例并形成再次聚类。

My redis-cluster statefulset config
My redis-cluster deployment config

您可以使用 DNS 名称代替 IP 地址吗?我认为这是将流量路由到有状态集中各个节点的首选方式:

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id

Redis-4.0.0 通过添加对 cluster announce node IP and Port

的支持解决了这个问题

cluster-announce-ip设置为redis实例kubernetes部署服务的静态IP。

Link 设置说明:https://github.com/zuxqoj/kubernetes-redis-cluster/blob/master/README-using-statefulset.md