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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:00