【问题标题】:How to connect kafka python client to k8s service?如何将kafka python客户端连接到k8s服务?
【发布时间】:2021-03-17 23:26:32
【问题描述】:

我在 9092 端口的 10.zz.yy.xx 上运行 k8s Kafka 服务。我为 kafka 安装了 python 客户端。所以想试试生产者和消费者是否工作正常。

这里是producer.py

from kafka import KafkaProducer
kafka_host = "10.zz.yy.xx.:9092"
print(kafka_host)

producer = KafkaProducer(bootstrap_servers=kafka_host)
 print("Initialized")
 producer.send('Hello','This is my text')


TOPIC_NAME = 'items'
producer = KafkaProducer(bootstrap_servers=kafka_host)
                          
producer.send(TOPIC_NAME, b'Test Message')
producer.flush()`

这里是consumer.py

from kafka import KafkaConsumer
TOPIC_NAME = 'items'
consumer = KafkaConsumer(TOPIC_NAME)
for message in consumer:
    print(message)

我收到错误消息:kafka.errors.NoBrokersAvailable: NoBrokersAvailable。 我指的是错误的服务吗?任何帮助将不胜感激。

【问题讨论】:

  • 你需要分享你是如何将Kafka安装到k8s中的。例如,您是在此处使用端口转发还是尝试连接到集群内的单个 pod?您是否有任何实际暴露 Kafka 端点的入口或服务?

标签: python kubernetes apache-kafka


【解决方案1】:

您不需要连接到 Zookeper 端口,而是连接到 Kafka Broker 端口。 尝试连接到 Zookeper 最终会得到 kafka.errors.NoBrokersAvailable: NoBrokersAvailable 错误信息。

根据documentation

bootstrap_servers – 'host[:port]' 字符串(或'host[:port]' 字符串列表),消费者应联系以引导初始集群元数据。这不必是完整的节点列表。 只需要至少有一个代理来响应元数据 API 请求。默认端口为 9092。如果未指定服务器,则默认为 localhost:9092

【讨论】:

  • 问题使用的是 9092,而不是 Zookeeper 端口
猜你喜欢
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多