如何在GitHub Action中访问Kafka服务并解决NoBrokersAvailable报错
问题根因
你遇到的NoBrokersAvailable错误由两个配置错误导致:
- 服务名不匹配:你声明的ZooKeeper服务名称是
zoo_keeper,但Kafka配置的ZK连接地址写的是zookeeper:2181,名称不一致导致Kafka无法连接ZooKeeper,无法完成启动流程。 - 配置项名称错误:bitnami/kafka镜像的ZooKeeper连接配置项为
KAFKA_CFG_ZOOKEEPER_CONNECT,你的配置多写了一层KAFKA_前缀,写成了KAFKA_CFG_KAFKA_ZOOKEEPER_CONNECT,导致Kafka读取不到正确的ZK地址。
另外你使用的Kafka健康检查命令kafka-broker-api-versions.sh --version仅会校验脚本是否存在,不会真的检查Kafka Broker是否就绪,可能会出现健康检查通过但Broker还没完成初始化的情况,也建议同步修改。
修正后的配置示例
test: runs-on: ubuntu-latest services: zoo_keeper: image: bitnami/zookeeper ports: - 2181:2181 env: ALLOW_ANONYMOUS_LOGIN: yes options: >- --health-cmd "echo mntr | nc -w 2 -q 2 localhost 2181" --health-interval 10s --health-timeout 5s --health-retries 5 kafka: image: bitnami/kafka ports: - 9092:9092 options: >- --health-cmd "kafka-broker-api-versions.sh --bootstrap-server localhost:9092 --list" --health-interval 10s --health-timeout 5s --health-retries 5 env: # 修正1:配置项名称删除多余的KAFKA_前缀,ZK地址改成和服务名一致的zoo_keeper KAFKA_CFG_ZOOKEEPER_CONNECT: "zoo_keeper:2181" ALLOW_PLAINTEXT_LISTENER: yes KAFKA_CFG_LISTENERS: "CLIENT://:9092,INTERNAL://:9093" KAFKA_CFG_ADVERTISED_LISTENERS: "CLIENT://localhost:9092,INTERNAL://kafka:9093" KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CLIENT:PLAINTEXT,INTERNAL:PLAINTEXT" KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL ... steps: - name: test ... run: pytest
内容的提问来源于stack exchange,提问作者itaied
相关产品推荐
相关产品推荐

