Kubernetes - 无法从服务的pod连接到服务IP

时间:2016-01-22 00:51:42

标签: apache-kafka kubernetes

我正在尝试创建3个Kafka实例并将其部署为本地Kubernetes设置。因为每个实例都需要一些特定的配置,所以我为每个实例创建一个RC和一个服务 - 急切地等待#18016;)

但是,由于Kafka在使用服例如,假设我有两个工作主机(172.17.8.201和172.17.8.202),我的播客安排如下:

  • 主持人1(172.17.8.201)

    • kafka1 pod(10.2.16.1)
  • 主持人2(172.17.8.202)

    • kafka2 pod(10.2.68.1)
    • kafka3 pod(10.2.68.2)

此外,假设我有以下服务IP:

  • kafka1群集IP:11.1.2.96
  • kafka2群集IP:11.1.2.120
  • kafka3群集IP:11.1.2.123

kafka1 pod(容器)尝试使用kafka1群集IP(11.1.2.96)发送消息(自身)时,会出现问题。由于某种原因,无法建立连接,并且未发送消息。

更多信息:如果我手动连接到kafka1窗格,我可以使用各自的群集IP正确telnet到kafka2kafka3窗格(11.1.2.120 / 11.1.2.123) )。另外,如果我在kafka2广告连播中,我会使用11.1.2.96和11.1.2.123连接到kafka1kafka3广告连播。最后,如果我使用pod IP,我可以连接到所有pod(来自所有pod)。

重要的是要强调,我不应该告诉kafka经纪人使用pod IP而不是群集IP进行复制。就像现在一样,Kafka用于复制您配置的任何IP“广告” - 这是您的客户端用于连接到代理的IP。即使我可以,我相信这个问题也可能出现在其他软件中。

这个问题似乎只发生在我正在使用的组合中,因为完全相同的文件在GCE中正常工作。现在,我正在跑步:

  • Kubernetes 1.1.2
  • coreos 928.0.0
  • 使用法兰绒进行网络设置
  • 关于vagrant + VirtualBpx的一切

经过一些调试后,我不确定问题是在worker iptables规则中,在kube-proxy中还是在法兰绒中。

PS:我最初在他们的github上发布了这个问题Issue,但我被Kubernetes团队重定向到了这里。我对文本进行了一些改写,因为它听起来像是一个“支持请求”,但实际上我认为它是某种错误。无论如何,抱歉Kubernetes团队!

修改:此问题已被确认为错误https://github.com/kubernetes/kubernetes/issues/20391

2 个答案:

答案 0 :(得分:3)

如果你想做什么,你应该使用无头服务 http://kubernetes.io/v1.0/docs/user-guide/services.html#headless-services

这意味着设置

a.gsub(/'/, "\\\\'" )

服务

中的

这意味着不会有与服务相关联的IP,但它将返回clusterIP: None

选择的Pod的所有IP

答案 1 :(得分:1)

更新:该错误已在v1.2.4中修复

您可以尝试container hook

jmeter.bat

我在将3个mongodb pod作为一个集群运行时遇到了类似的问题但是pod无法通过他们的服务来访问自己。 IP

另外,修复了错误吗?