在GitLab CI/CD流水线运行Kafka命令遇超时异常,求配置排查方案
我是GitLab和Kafka的新手,不清楚如何通过Shell脚本在GitLab CI/CD流水线中运行Kafka命令。我使用了以下配置来实现,但运行时出现异常,请问是否存在遗漏或错误配置?请给予建议。
当前配置
.gitlab-ci.yml
run_kafka: image: confluentinc/cp-kafka script : - . demo.sh
demo.sh
kafka-consumer-groups --command-config ./config.properties --bootstrap-server "pkc-6ojv2.us-west4.gcp.confluent.cloud:9092" --group my-created-consumer-group --topic SampleTopic --reset-offsets --to-current
config.properties
bootstrap.servers=pkc-confluent.cloud:9092 ssl.endpoint.identification.algorithm=https security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="" password="";
异常信息
Error: Executing consumer group command failed due to org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: describeGroups(api=FIND_COORDINATOR) java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: describeGroups(api=FIND_COORDINATOR) at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395) at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999) at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165) at kafka.admin.ConsumerGroupCommand$ConsumerGroupService.$anonfun$resetOffsets$1(ConsumerGroupCommand.scala:434) at scala.collection.IterableOnceOps.foldLeft(IterableOnce.scala:675) at scala.collection.IterableOnceOps.foldLeft$(IterableOnce.scala:669) at scala.collection.AbstractIterable.foldLeft(Iterable.scala:933) at kafka.admin.ConsumerGroupCommand$ConsumerGroupService.resetOffsets(ConsumerGroupCommand.scala:432) at kafka.admin.ConsumerGroupCommand$.run(ConsumerGroupCommand.scala:76) at kafka.admin.ConsumerGroupCommand$.main(ConsumerGroupCommand.scala:59) at kafka.admin.ConsumerGroupCommand.main(ConsumerGroupCommand.scala) Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: describeGroups(api=FIND_COORDINATOR)
问题排查与建议
Bootstrap Server地址不匹配:demo.sh中的
bootstrap-server是pkc-6ojv2.us-west4.gcp.confluent.cloud:9092,但config.properties里的bootstrap.servers是pkc-confluent.cloud:9092,两者完全不一致。必须将两个地址统一为Confluent Cloud控制台显示的正确集群Bootstrap Server地址,否则客户端无法定位集群节点。SASL认证信息缺失:config.properties中
username和password为空,Confluent Cloud需要有效的API密钥(Key作为username,Secret作为password)才能完成认证。请在Confluent Cloud控制台生成对应集群的API密钥对,替换配置中的空值。网络连通性检查:确认GitLab Runner所在网络允许访问Confluent Cloud的9092端口。如果是自托管Runner,需检查防火墙或安全组规则是否放行该端口的出站流量;共享Runner通常无需额外配置,但需确保网络环境无限制。
补充命令执行参数:执行
reset-offsets命令时,需添加--execute参数才会实际执行偏移量重置,否则仅输出操作计划。修正后的命令示例:kafka-consumer-groups --command-config ./config.properties --bootstrap-server "正确的集群地址:9092" --group my-created-consumer-group --topic SampleTopic --reset-offsets --to-current --execute指定镜像版本:建议给
confluentinc/cp-kafka镜像指定具体版本(如confluentinc/cp-kafka:7.4.0),避免因镜像自动更新引发的版本兼容性问题。
内容的提问来源于stack exchange,提问作者ravvi

