Kafka Connect在K8s集群提交任务失败:缺少必要签名求助
针对你遇到的Kafka Connect 7.5.1在K8s中运行S3 Sink Connector时的异常,以下是针对性的排查和修复方案:
统一AWS凭证配置
确保所有Connect节点和Connector使用一致的AWS认证方式:要么全用静态aws.access.key.id/aws.secret.access.key,要么全用IAM角色(配合K8s IRSA)。禁止混用两种方式,否则会触发内部签名逻辑冲突。如果用IAM角色,检查aws.role.arn的拼写,以及ServiceAccount绑定的角色是否拥有目标S3桶的读写权限。优化任务分配与节点通信配置
50分区的主题需要合理分配任务数,给每个Connector显式设置tasks.max(比如按4个Connector拆分,每个设为12或13),避免自动分配时的资源竞争。同时检查Connect的rest.advertised.host.name和rest.advertised.port,确保节点间内部请求的URL完全正确——签名验证依赖合法的内部请求地址,URL不匹配会直接导致签名缺失报错。排查S3路径格式
每个Connector的s3.bucket.name、s3.prefix不能有特殊字符或格式错误,比如前缀末尾的斜杠要保持一致。可以先单独启动一个Connector,确认任务正常后再逐个添加其他Connector,排查是否是多Connector并发启动导致的签名请求冲突。升级修复版本
Confluent Platform 7.5.1的S3 Sink Connector存在高并发场景下的内部签名验证bug,官方在7.5.3及后续版本中修复了该问题。建议升级Connect和Connector版本到7.5.3或更高。验证K8s网络与权限
在Connect Pod内执行aws s3 ls s3://<你的桶名>测试S3连通性,排除网络策略或防火墙拦截。如果用IRSA,检查Pod的ServiceAccount信任策略,确保允许AssumeRole获取有效临时凭证——临时凭证失效或获取失败也会触发签名缺失错误。
内容的提问来源于stack exchange,提问作者HEMANT PATEL

