You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在K8s(Helm3部署)中将容器日志发送至UDP服务器?

Kubernetes(Helm3)实现容器日志UDP转发方案

核心需求:保留kubectl logs -f <pod_name>的日志查看能力,同时将日志转发至指定UDP syslog服务器,不改动下游系统,尽可能低侵入。


方案选型说明

直接修改容器日志驱动为syslog会导致本地无日志文件,kubectl logs无法读取,因此必须采用日志采集DaemonSet的方式——保留默认json-file日志驱动,通过轻量采集工具转发日志,这是满足需求的最优解。

具体实现:用Fluent Bit(Helm部署)

Fluent Bit是轻量、高性能的日志采集工具,适合K8s环境,侵入性极低。

1. 添加Helm仓库并更新

helm repo add fluent https://fluent.github.io/helm-charts
helm repo update

2. 自定义配置文件(fluent-bit-values.yaml)

配置采集节点容器日志并转发到目标UDP服务器:

config:
  inputs:
    - name: tail
      tag: kubernetes.*
      path: /var/log/containers/*.log
      parser: docker
      db: /var/log/flb_kube.db
      mem_buf_limit: 5MB
      skip_long_lines: true
      refresh_interval: 10

  filters:
    - name: kubernetes
      match: kubernetes.*
      k8s-annotation-prefix: kubernetes.io/
      kube-url: https://kubernetes.default.svc:443
      merge_log: true
      merge_log_key: log_processed

  outputs:
    - name: syslog
      match: "*"
      host: some-udp-server
      port: port
      mode: udp
      format: rfc5424
      syslog_hostname_key: kubernetes.pod_name
      syslog_appname_key: kubernetes.container_name
      syslog_message_key: log

3. 部署Fluent Bit

helm install fluent-bit fluent/fluent-bit -f fluent-bit-values.yaml -n logging --create-namespace

关键说明

  1. 是否需要第三方应用:是的,必须使用Fluent Bit(或同类工具如Fluentd),这是同时满足kubectl logs可见和UDP转发的唯一稳定方案,且侵入性极低:

    • 无需修改业务应用的Helm清单
    • 无需改动集群节点底层配置
    • 完全兼容下游UDP服务器与Grafana可视化流程
  2. 不推荐的方案:

    • 直接修改容器logConfig为syslog:会丢失本地日志,导致kubectl logs失效
    • 集群级Docker双重日志驱动(需Docker 20.10+):侵入性高,需所有节点修改配置,稳定性不如采集工具

内容的提问来源于stack exchange,提问作者user1452759

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:53:13