gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:43:34 24 4
gpt4 key购买 nike

我正在尝试创建 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.96
  • kafka2集群 IP:11.1.2.120
  • kafka3集群 IP:11.1.2.123

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

    更多信息:如果我手动连接到 kafka1 pod,我可以正确 telnet 到 kafka2kafka3 Pod 使用各自的集群 IP (11.1.2.120/11.1.2.123)。另外,如果我在 kafka2 pod,我连接到两个 kafka1kafka3使用 11.1.2.96 和 11.1.2.123 的 pod。最后,如果我使用 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 还是 flannel 中。

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

    编辑:此问题已确认为错误 https://github.com/kubernetes/kubernetes/issues/20391

    最佳答案

    对于您想要做的事情,您应该使用 headless 服务
    http://kubernetes.io/v1.0/docs/user-guide/services.html#headless-services

    这意味着设置
    clusterIP: None
    在您的 服务

    这意味着不会有与服务关联的 IP,但它会返回 selector 选择的 Pod 的所有 IP。

    关于apache-kafka - Kubernetes - 无法从服务的 pod 连接到服务 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937184/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com