虚拟机部署Strimzi Kafka Ingress外部监听器超时错误求助
问题排查步骤
- 首先检查Ingress资源生成状态
执行命令kubectl get ingress -n default,确认my-cluster-kafka-bootstrap这个Ingress资源是否正常创建,且ADDRESS字段已填充为你的Nginx Ingress Controller的外部IP(10.104.187.226)。
若ADDRESS字段为空,是因为你的Nginx Ingress Controller没有开启地址自动填充功能,需要给Controller的启动参数添加--publish-service=ingress-nginx/ingress-nginx-controller,Controller会自动将自身的LB IP同步到所有关联的Ingress资源的ADDRESS字段,Strimzi依赖该字段判断Ingress是否可寻址。 - 检查IngressClass匹配配置
如果你部署的Nginx Ingress Controller没有设置为集群默认IngressClass,需要在Kafka的外部监听器配置中显式指定IngressClass,在external监听器的configuration层级下添加ingressClass: nginx,避免生成的Ingress资源没有绑定到你的Nginx Controller,无法被处理。 - 开启Nginx Ingress TLS透传功能
Strimzi的Ingress类型外部监听器默认使用TLS passthrough模式,不会在Ingress层做证书卸载,需要给Nginx Ingress Controller的启动参数添加--enable-ssl-passthrough,否则443端口的TLS握手会直接失败,导致Strimzi可用性检测超时。 - 验证DNS解析有效性
确认你配置的localb.kafka.xxx.com、local.kafka.xxx.com域名,在Strimzi Operator所在Pod、集群所有节点上都能解析到Ingress Controller的外部IP 10.104.187.226,可进入Operator Pod执行nslookup localb.kafka.xxx.com验证,解析失败的话可以修改节点hosts文件,或者给CoreDNS添加自定义解析规则。
本地离线环境部署Strimzi Kafka方案
- 提前同步镜像:在联网环境拉取对应版本的Strimzi Operator镜像、Kafka镜像、ZooKeeper镜像、Kafka Exporter镜像,导出为tar包后传入离线环境,通过
ctr image import命令导入到所有节点的containerd镜像仓库,也可以上传到本地私有镜像仓库统一管理。 - 离线部署Operator:下载对应版本的Strimzi安装YAML包,替换所有镜像地址为本地导入的镜像名/私有镜像仓库地址,直接执行
kubectl apply -f安装Operator到指定命名空间,等待Pod正常运行。 - 部署Kafka集群前先完成依赖组件部署:提前在离线环境部署好Calico、MetalLB、Nginx Ingress Controller等网络组件,验证LoadBalancer、Ingress资源可以正常创建使用后,再部署Kafka自定义资源即可。
内容的提问来源于stack exchange,提问作者Oana
相关产品推荐
相关产品推荐

