vir*_*sox 9 apache-kafka kubernetes
我正在尝试创建3个Kafka实例并将其部署为本地Kubernetes设置.因为每个实例都需要一些特定的配置,我为每个实例创建一个RC和一个服务 - 急切等待#18016 ;)
但是,我遇到了问题,因为Kafka在使用服务IP时无法与自己建立网络连接(Kafka代理在与其他代理交换复制消息时尝试执行此操作).例如,假设我有两个工作主机(172.17.8.201和172.17.8.202),我的pod安排如下:
主持人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.96kafka2
集群IP:11.1.2.120kafka3
集群IP:11.1.2.123当kafka1
pod(容器)尝试使用kafka1
群集IP(11.1.2.96)发送消息(自身)时,会发生此问题.由于某种原因,无法建立连接并且不发送消息.
一些更多的信息:如果我手动连接到kafka1
吊舱,我可以正确地远程登录kafka2
和kafka3
荚使用其各自的集群的IP(11.1.2.120/11.1.2.123).此外,如果我在kafka2
pod中,我使用11.1.2.96和11.1.2.123 连接到pod kafka1
和kafka3
pod.最后,如果我使用pod IP,我可以连接到所有pod(来自所有pod).
需要强调的是,我不应该告诉kafka代理使用pod IP而不是群集IP进行复制.就像现在一样,Kafka用于复制您配置的任何IP"广告" - 这是您的客户端用于连接到代理的IP.即使我可以,我相信这个问题也可能出现在其他软件中.
这个问题似乎只发生在我正在使用的组合中,因为完全相同的文件在GCE中正常工作.现在,我正在运行:
经过一些调试后,我不确定问题是在worker iptables规则中,在kube-proxy中还是在法兰绒中.
PS:我最初将这个问题作为问题发布在他们的github上,但我被Kubernetes团队重定向到了这里.我对文本进行了一些改写,因为它听起来像是一个"支持请求",但实际上我认为它是某种错误.无论如何,抱歉Kubernetes团队!
编辑:此问题已被确认为错误https://github.com/kubernetes/kubernetes/issues/20391
对于您想要做的事情,您应该使用无头服务 http://kubernetes.io/v1.0/docs/user-guide/services.html#headless-services
这意味着设置
clusterIP: None
在您的服务中
这意味着不会有与服务关联的 IP,但它会返回由 selector
归档时间: |
|
查看次数: |
3323 次 |
最近记录: |