ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Vector Kubernetes 部署从零开始:Agent + Aggregator 两种形态一次跑通

2026/9/6 18:34:57 拓冰建站 浏览量
Vector Kubernetes 部署从零开始:Agent + Aggregator 两种形态一次跑通 Vector Kubernetes 部署从零开始Agent Aggregator 两种形态一次跑通【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vectorVector 是一款用 Rust 编写的可观测性数据管道工具。本文走一遍它的 Kubernetes 部署先在本地跑通默认管道再拉起 Agent DaemonSet 与 Aggregator StatefulSet最后对照配置文件过一遍关键字段——如何从容器采集日志、如何转发到存储。两分钟跑通默认管道sources / transforms / sinks 三块结构上 K8s 之前先看清一条最小管道长什么样。Vector 的配置永远由三块组成sources采集、transforms转换、sinks输出数据从左到右单向流动。git clone https://gitcode.com/GitHub_Trending/vect/vector cd vector vector --config config/vector.yaml启动后终端会持续打印解析好的日志。config/vector.yaml 这条默认管道恰好是三块各一sources.demo_logs内置的 Syslog 风格模拟日志源transforms.parse_logs用 VRLVector Remap LanguageVector 的内置转换语言的parse_syslog!把原始文本解析成结构化字段sinks.print以 JSON 格式输出到标准输出。仓库 README 里引用的基准测试称 Vector 相比同类工具最高快 10 倍并提到其最大用户日处理量超过 500TB。在讨论这些数字之前值得先记住的其实是上面这个三块结构——后面所有配置都是它的变体。一条命令拉起 Agent DaemonSet官方清单里有什么生产集群里 Vector 通常拆成两种角色Agent在每个节点上负责采集Aggregator独立部署负责汇聚与路由。仓库在 distribution/kubernetes/ 下为两种形态都备好了现成清单。kubectl apply -f distribution/kubernetes/vector-agent/ kubectl get pods -n default -l app.kubernetes.io/namevectorAgent 是标准 DaemonSet每个节点跑一个实例。清单里有几个容易忽略的点配置项清单中的取值作用镜像timberio/vector:0.57.0-distroless-libcdistroless 基础镜像减小攻击面/var/log、/var/lib、/proc、/sys只读挂载采集节点日志与主机指标data_dir/vector-data-dir映射到宿主机/var/lib/vector缓冲与文件位点落盘重启不丢就绪探针httpGet /health:8686依赖内置 API未就绪不接流量Agent 的 ConfigMapkubernetes_logs、host_metrics、prometheus_exporter 三个关键配置点配置写在 ConfigMap 的agent.yaml里而不是 DaemonSet 内改配置不用动工作负载。三个点值得单独拎出。1. 容器日志源kubernetes_logs。默认采集节点上所有 Pod 的日志可用extra_field_selector直接按 metadata 过滤sources: kubernetes_logs: type: kubernetes_logs extra_field_selector: metadata.namespace!kube-system # 排除系统命名空间2. 主机指标host_metrics。Agent 顺带采集节点文件系统等主机指标默认经prometheus_exporter暴露在0.0.0.0:9090交给 Prometheus 抓取即可无需额外 exporter。3. 自身 APIapi。清单默认在0.0.0.0:8686开启/health就绪检查和vector top资源视图都靠它后文排障也会用到。Aggregator 端7 个监听端口与 Agent 如何把数据送过去Aggregator 是 StatefulSet端口是写死的协议清单。Agent 转发走vector端口存量体系接入则选对应协议端口Source 类型端口接收什么vector6000Vector Agent 转发version 2 协议logstash5044Beats / Logstash 协议syslog9000SyslogTCPsplunk_hec8080Splunk HECdatadog_agent8282Datadog Agent 转发fluent24224FluentTCPstatsd8125StatsdTCPkubectl apply -f distribution/kubernetes/vector-aggregator/Aggregator 清单里的默认 sink 同样是console把全部输入以 JSON 打到 stdout联调够用进入生产后应改成真实存储Elasticsearch、S3、Loki 等config/examples/ 下有多份现成模板可对照。健康检查与调优三步确认管道正常部署完成后按顺序做三件事# 1) 在 Agent 容器内校验配置字段拼错、inputs 引用不存在都会在这暴露 kubectl exec -it vector-agent-pod -- vector validate /etc/vector/agent.yaml # 2) 转发 API 端口查看各组件吞吐 kubectl port-forward -n default vector-agent-pod 8686:8686 vector top --api 127.0.0.1:8686 # 3) 抓取 Agent 的自监控指标 curl -s agent-node-ip:9090/metrics | head三类常见问题Pod 起不来 / 反复重启先跑vector validate绝大多数是字段拼写或inputs引用了不存在的组件名日志量压不住收紧extra_field_selector或调小max_line_bytes限制单行大小担心重启丢数据给 sink 配置磁盘缓冲位点与缓冲都落在data_dir下。下一步把 Agent 的输出接到 Aggregator 的 6000 端口打通端到端链路再把 console sink 换成真实存储阅读 docs/ARCHITECTURE.md了解背压与缓冲机制的设计取舍。【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考