docker - Kubernetes "Waiting for the cluster to join..."搭建Redis集群时ip错误

标签 docker redis kubernetes redis-cluster

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

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

为了查看发生了什么,我将 redis pod 的日志级别设置为 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 网络使用法兰绒。问题可能来自 flannel 的错误配置吗?有没有人遇到同样的问题?

最佳答案

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

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

你分享的第二个例子,有另一部分是 redis cluster using statefulsets .试试看。

关于docker - Kubernetes "Waiting for the cluster to join..."搭建Redis集群时ip错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985895/

相关文章:

带有 Docker-Compose 和 AWS RDS MySQL 数据库的 AWS EC2 上的 WordPress

c# - Redis全文搜索与C#

Kubernetes Pod 在 "Pod sandbox changed, it will be killed and re-created"上失败

kubernetes - GKE自定义内部服务域

redis - Redis 镜像目前是否可以在 Windows 上与 Docker 一起使用?

kubernetes - 在 kustomize manifest 中创建变量

reactjs - 如何在 docker 和 webpack 的 react 中访问环境变量

Docker 容器(Windows10、Centos7)端口

macos - docker-machine - 尝试对插件服务器进行心跳调用时出错 : connection is shut down

mongodb - 关于Morphia版本(乐观锁)