繁体   English   中英

Microk8s Kafka 生产者连接失败

[英]Microk8s Kafka Producer Connection Failure

我正在尝试使用部署在 Microk8s 上的 Kafka,使用两个 Python 脚本创建一个简单的生产者和消费者。 但是,在运行 producer.py 脚本时,重复出现以下错误:

...|FAIL|rdkafka#producer-1| [thrd:...:9092/bootstrap]: ...:9092/bootstrap: Connect to ipv4#localhost:9092 failed: Connection refused (after 0ms in state CONNECT, ... identical error(s) suppressed

我相当有信心这个问题是由于没有正确配置监听器造成的,但到目前为止我还无法弄清楚我需要做些什么来修复它们,因为我认为我完全缺乏任何知识这片区域。 我已经查看了这些资源,以及来自该站点的其他几个资源,但一直无法找到解决方案,或者至少是我能理解到足以采取行动的解决方案。

重现步骤:

可以在此处找到生成生产者和消费者的 Python 脚本。

对于 Microk8s 安装,我遵循了这些说明。 我还安装了 Helm,因为我的项目要求要求我使用 Helm 图表。

然后我使用以下命令安装了 Kafka:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install kafka-release bitnami/kafka

链接帖子中的 Python 代码使用'localhost:9092' ,因为错误也显示 - Connect to ipv4#localhost:9092 failed

如果您尝试在 k8s pod 中运行该代码,则需要为外部代理提供 DNS 地址,而不是本地 pod 地址。

如果您从 k8s 集群外部运行 Python 代码,则需要公开 ClusterIP / NodePort 外部服务或入口(如链接的 Strimzi 帖子所示;此外,您仍然可以将 Strimzi Operator 与 Helm 一起使用,因此您实际上不必需要 Bitnami 图表)。


在高层次上, advertisted.listeners告诉客户如何连接到特定的代理。 如果你通告本地主机,pod 将尝试连接到自身,即使引导连接有效(仅由listeners设置)。 如果你宣传kafka.svc.cluster.local ,那么它会尝试连接到default命名空间中的kafka服务......但你仍然需要实际设置boostrap.servers = kafka.svc.cluster.local:9092 ,因为例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM