Kubernetes中FluentBit用Service域名转发到FluentD报Connection refused
问题排查与解决方案
核心错误原因
你当前问题的根源是forward日志链路的端口配置完全不匹配,从你给出的各组件配置可以明确看到:
- FluentD的forward输入插件实际监听端口为
24224 - FluentD DaemonSet声明暴露的容器端口为
24244 - FluentD Service的转发规则是将
24244端口映射到容器的24244端口 - FluentBit的forward输出配置目标端口为
24244
Service本身的DNS解析、转发逻辑是正常的,你提到的Prometheus采集端口可通过Service正常访问就可以印证这一点,问题完全出在forward相关端口的链路不匹配:Service把请求转发到了容器的24244端口,但FluentD的forward服务根本没有监听这个端口,自然会返回连接拒绝。你之前用PodIP能连通,应该是当时你手动指定了正确的24224端口进行测试。
修复方案
任选以下一种即可,核心是保证整条日志转发链路的端口一致:
方案1:修改FluentD配置匹配现有端口规则
把FluentD的forward监听端口修改为24244,和现有Service、DaemonSet的配置对齐:
<source> @type forward port 24244 bind 0.0.0.0 @label @applogs tag applogs.* </source>
方案2:修改Service、DaemonSet、FluentBit配置匹配现有FluentD监听规则
- 更新FluentD DaemonSet的暴露端口,新增24224端口的声明
- 更新FluentD Service配置,新增24224端口映射到容器的24224端口,或替换原有错误的24244端口配置
- 同步修改FluentBit的forward输出配置中的Port为
24224
验证步骤
修复配置后,先进入FluentBit所在的Pod,执行nc -zv fluentd.logging.svc.cluster.local <配置的端口号>确认连通性正常,再重启FluentBit验证日志转发功能是否恢复。
内容的提问来源于stack exchange,提问作者codiaf
相关产品推荐
相关产品推荐

