AWS EKS部署Bitnami Kafka遇SASL握手认证失败问题求助
解决Bitnami Kafka EKS部署中SASL握手认证失败问题
问题描述
- 环境:AWS EKS,已将Bitnami Kafka Helm Chart转换为Kubernetes YAML文件部署
- 部署顺序:先部署RBAC目录下YAML → 持久化卷目录文件 → 主目录
scripts-configmap.yaml、secrets.yaml、svc.yml→ controller-eligible目录文件 - 执行以下生产者命令时出现认证失败:
kubectl --namespace test-microservices exec -it pod/kafka-controller-0 -- kafka-console-producer.sh --broker-list kafka:9092 --topic mytopic --producer.config /opt/bitnami/kafka/config/producer.properties - 错误日志:
INFO [SocketServer listenerType=BROKER, nodeId=0] Failed authentication with /10.1.26.148 (channelId=10.1.26.250:9092-10.1.26.148:24905-2) (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector)
问题根因
该错误核心是客户端在SASL握手流程未完成前就发送了METADATA请求,本质是客户端与Broker的SASL配置不匹配,或客户端连接的端口未启用SASL认证。
排查与修复步骤
1. 确认Broker监听端口配置
Bitnami Kafka默认区分内部无认证端口和SASL认证端口,检查Kafka Controller Pod的启动参数或ConfigMap中的listeners配置:
- 确保
listeners包含类似SASL_PLAINTEXT://:9093的配置(9092通常为集群内部无认证通信端口,不对外提供客户端连接) - 确认
advertised.listeners已正确对外暴露SASL端口
2. 修正生产者命令的Broker地址
将命令中的Broker端口改为SASL认证端口(通常为9093):
kubectl --namespace test-microservices exec -it pod/kafka-controller-0 -- kafka-console-producer.sh --broker-list kafka:9093 --topic mytopic --producer.config /opt/bitnami/kafka/config/producer.properties
3. 验证producer.properties的SASL配置
检查/opt/bitnami/kafka/config/producer.properties中的SASL参数是否正确:
security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="YOUR_KAFKA_USER" password="YOUR_KAFKA_PASSWORD";
确保用户名密码与部署时secrets.yaml中配置的凭证一致。
4. 确认Service端口映射
检查svc.yml中Kafka Service的端口映射,确保SASL端口已正确暴露:
ports: - name: sasl-plaintext port: 9093 targetPort: sasl-plaintext
5. 检查部署顺序的潜在问题
确认secrets.yaml在Controller Pod启动前已创建完成:
- 若Secrets是在Pod启动后才部署的,需重启Kafka Controller Pod,让Pod重新加载认证凭证
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

