在Kubernetes上设置Redis群集时错误的IP“等待群集加入...”

时间:2018-04-23 16:33:24

标签: docker redis kubernetes redis-cluster

我正在尝试在azure上使用kubernetes构建一个redis集群。在运行不同的样本时,我遇到了完全相同的问题:sanderp.nl/running-redis-cluster-on-kubernetesgithub.com/zuxqoj/kubernetes-redis-cluster

一切顺利,直到我尝试让不同的节点使用redis-trib命令加入群集。 那时我面对臭名昭着的无限“等待集群加入.... ”的消息。

试着看看发生了什么,我将redis pod的loglevel设置为debug级别。然后我注意到,在一起通信时,pod似乎没有宣布正确的ip。 事实上,似乎ip的最后一个字节被零取代。假设pod1的IP地址为10.1.34。 9 ,我会在pod2日志中看到:

接受的clusternode 10.1.34。 0 someport

因此,pod似乎无法回传,并且连接群集进程永远不会结束。

现在,如果在运行redis-trib之前,我通过在每个pod上运行来强制执行cluster-announce-ip

redis-cli -h mypod-ip config set cluster-announce-ip mypod-ip

redis-trib命令随后成功完成,群集已启动并正在运行。

但这不是一个可行的解决方案,好像一个pod关闭并返回,它可能已经改变了ip,当它尝试加入群集时我将面临同样的问题。

请注意,使用minikube运行示例时,我不会遇到任何问题。

我正在使用法兰绒用于kubernetes网络。这个问题可能来自法兰绒的错误配置吗?有没有人遇到过同样的问题?

1 个答案:

答案 0 :(得分:1)

您可以使用statefulsets部署副本,因此您的广告连接将始终具有唯一名称。

此外,您将能够使用service DNS名称作为主机。请参阅此官方文档DNS for Services and Pods

您分享的第二个示例包含redis cluster using statefulsets的另一部分。试试吧。