Minikube用Strimzi部署Debezium报错:kafka_connect_run.sh不存在
问题分析与解决
错误根源
你碰到的/opt/kafka/kafka_connect_run.sh: No such file or directory报错,核心问题是Debezium官方Connect镜像和Strimzi的KafkaConnect控制器不兼容。
Strimzi的KafkaConnect资源依赖自身的启动脚本管理Connect集群,但Debezium官方镜像的目录结构、启动逻辑和Strimzi的预期完全不匹配——Strimzi需要的/opt/kafka/kafka_connect_run.sh脚本在Debezium官方镜像里根本不存在,直接导致容器启动失败。
两种可行解决方案
方案1:直接用Strimzi预构建的Debezium镜像
Strimzi提供了已经集成Debezium连接器的官方镜像,只需替换KafkaConnect配置里的image字段即可,注意镜像版本要和你指定的Kafka版本(spec.version)对应:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster namespace: kafka spec: version: 3.0.0 replicas: 1 bootstrapServers: my-cluster-kafka-bootstrap:9092 # 替换为Strimzi适配Kafka 3.0.0的Debezium镜像 image: quay.io/strimzi/kafka-connect-debezium:0.29.0-kafka-3.0.0 resources: requests: memory: 2Gi cpu: 1 limits: memory: 4Gi cpu: 2 config: group.id: connect-cluster offset.storage.topic: connect-offsets config.storage.topic: connect-configs status.storage.topic: connect-status key.converter: org.apache.kafka.connect.json.JsonConverter value.converter: org.apache.kafka.connect.json.JsonConverter key.converter.schemas.enable: false value.converter.schemas.enable: false
方案2:自定义构建兼容Strimzi的镜像
如果需要自定义插件组合,可以基于Strimzi的基础Connect镜像,添加Debezium连接器。示例Dockerfile:
FROM quay.io/strimzi/kafka:0.29.0-kafka-3.0.0 USER root # 下载并解压Debezium PostgreSQL连接器(版本按需调整) RUN mkdir -p /opt/kafka/plugins/debezium-connector-postgresql && \ curl -Ls https://repo1.maven.org/maven2/io/debezium/debezium-connector-postgresql/2.7.0.Final/debezium-connector-postgresql-2.7.0.Final-plugin.tar.gz | tar -xz -C /opt/kafka/plugins/debezium-connector-postgresql USER 1001
构建完成后,把KafkaConnect里的image替换成你自己的镜像地址即可。
额外注意事项
- Connect主题权限:Strimzi一般会自动创建
connect-offsets、connect-configs、connect-status这三个主题,但如果集群权限管控严格,可能需要手动创建并确保Connect服务账号有读写权限。 - PostgreSQL配置:你用的
quay.io/debezium/example-postgres:2.7镜像默认已经开启逻辑复制,所以这部分无需额外调整。
内容的提问来源于stack exchange,提问作者sammy
相关产品推荐
相关产品推荐

