You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microk8s部署Kafka后Python生产者连接失败问题求助

Kafka部署在Microk8s上时Python生产者无法连接:Connection refused错误

我用两个Python脚本实现简单的生产者和消费者,Kafka部署在Microk8s上,但运行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 Chart)
  • 通过以下命令安装Kafka:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install kafka-release bitnami/kafka

解决方法

Bitnami的Kafka Helm Chart默认只配置了集群内部可访问的监听器,本地主机的Python脚本属于外部客户端,需要调整配置来允许外部访问:

1. 重新配置Kafka,启用外部访问

执行Helm升级命令,开启外部访问并指定NodePort:

helm upgrade kafka-release bitnami/kafka --set service.type=NodePort --set externalAccess.enabled=true --set externalAccess.service.nodePorts[0]=30092

如果是刚安装完还没改配置,也可以直接用上面的参数重新安装。

2. 获取Microk8s节点的内部IP

在部署Microk8s的机器上执行命令,找到节点的IP:

microk8s kubectl get nodes -o wide

查看输出里INTERNAL-IP列的地址,比如192.168.31.15。

3. 修改Python生产者的连接地址

打开你的producer.py脚本,把bootstrap_servers的值从localhost:9092替换成刚才拿到的节点IP加30092端口,示例:

producer = KafkaProducer(bootstrap_servers=['192.168.31.15:30092'],
                         value_serializer=lambda x: 
                         json.dumps(x).encode('utf-8'))

4. 临时测试方案(可选)

如果只是临时测试,不想修改Helm配置,可以用端口转发把Kafka的9092端口映射到本地:

microk8s kubectl port-forward svc/kafka-release 9092:9092

这时候生产者脚本用localhost:9092就能连接,但这个转发会在终端关闭后失效,只适合临时调试。


内容的提问来源于stack exchange,提问作者wb1210

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:55:15