连接拒绝尝试使用 "Forward" TCP 的主机名从 FluentBit 到 Kubernetes 中的 FluentD 实例

Connection refused trying to use hostnames for "Forward" TCP from FluentBit into a FluentD instance in Kubernetes

我将 fluentbit 部署为 sidecar。这个 fluentbit 有一个 Forward 类型的输出,假设将日志发送到部署为 DaemonSet 的 FluentD。

当使用 FluentD 的 PodIP 作为主机时实现有效,但当使用来自 Kubernetes 的服务主机名时我得到连接被拒绝。

这是使用上游方法时的错误:

[error] [net] TCP connection failed: fluentd.logging.svc.cluster.local:24224 (Connection refused)
[error] [net] socket #33 could not connect to fluentd.logging.svc.cluster.local:24224
[debug] [upstream] connection #-1 failed to fluentd.logging.svc.cluster.local:24224
[error] [output:forward:forward.0] no upstream connections available

这是使用常规 Host 方法时的错误:

[error] [output:forward:forward.0] could not write forward header

我尝试使用 Forward for Fluentbit 中的 Host 参数,以及具有相同结果的上游功能。

没有适当的网络政策。这是上游的配置。对于 Host,它将在 OUTPUT 部分中包含 Host 和 Port 而不是 Upstream。

[SERVICE]
  Daemon Off
  Flush 5
  Log_Level debug
  Parsers_File parsers.conf
  Parsers_File custom_parsers.conf
  HTTP_Server Off
[INPUT]
  Name tail
  Path /var/app-logs/*
  Parser json
  Tag app-logs.*
  Mem_Buf_Limit 5MB
  Skip_Long_Lines On
[OUTPUT]
  Name forward
  Match app-logs.*
  Host fluentd.logging.svc.cluster.local
  Port 24244
[PARSER]
  Name json
  Format json
  Time_Key time
  Time_Format %Y-%m-%dT%H:%M:%S.%L

FluentD 部署有一个 24244 TCP 端口连接到容器 TCP 端口 24244 的服务,FluentD 正在侦听。

一个简单的“nc”测试也显示我能够连接到 PodIP,但不能连接到服务主机名。

我的 FluenD daemonset 中还有一个用于 Prometheus 指标的额外端口,我可以使用主机名“nc”到那个端口。

这是 FluentD 服务

NAME      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)               AGE
fluentd   ClusterIP   10.102.255.48   <none>        24231/TCP,24244/TCP   4d6h

这是 FluentD 部署

Containers:
  fluentd:
    Container ID:   xxxx
    Image:          xxxx
    Image ID:       xxxx
    Ports:          24231/TCP, 24244/TCP
    Host Ports:     0/TCP, 0/TCP

这是 FluentD 转发侦听器配置

<source>
  @type forward
  port 24224
  bind 0.0.0.0
  @label @applogs
  tag applogs.*
</source>

我是不是漏掉了什么明显的东西?

好吧,愚蠢的错误,号码端口写错了,所以FluentBit中配置的与Kubernetes Service中定义的不匹配-.-