1. 项目概述:Kubernetes环境下使用Log-Pilot实现容器日志收集
在容器化应用日益普及的今天,日志管理成为运维工作中不可忽视的一环。传统方式下,我们需要为每个容器单独配置日志收集方案,这不仅效率低下,还难以维护。Log-Pilot作为阿里云开源的轻量级日志收集工具,完美解决了Kubernetes环境中容器日志收集的痛点。
我最近在生产环境中部署了Log-Pilot,发现它相比传统的Fluentd/Filebeat方案有几个显著优势:首先,它支持自动发现容器日志,无需为每个应用单独配置;其次,它能同时处理stdout日志和容器内部文件日志;最重要的是,它与Kubernetes的集成度极高,通过简单的环境变量就能完成复杂配置。下面我将分享从零开始搭建这套系统的完整过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构解析
2.1 Log-Pilot工作原理
Log-Pilot采用DaemonSet方式部署,意味着它会在每个Kubernetes节点上运行一个Pod。这个Pod通过挂载宿主机的Docker socket(/var/run/docker.sock)和根文件系统(/),实现对容器日志的监控和收集。
当新容器启动时,Log-Pilot会检测容器中的特定环境变量(如aliyun_logs_*),根据这些变量的值决定如何收集该容器的日志。这种机制使得日志收集配置与应用程序解耦,我们只需要在部署应用时添加相应的环境变量即可。
2.2 日志流转路径
完整的日志流转路径如下:
- 应用容器将日志输出到stdout或特定文件
- Docker引擎捕获stdout输出并写入宿主机的/var/lib/docker/containers目录
- Log-Pilot检测到新容器后,根据环境变量配置开始收集日志
- 收集到的日志经过处理后发送到Elasticsearch
- 用户通过Kibana查询和分析日志
这种架构的优点是:
- 低侵入性:应用容器无需安装任何日志代理
- 高可靠性:即使Log-Pilot短暂重启也不会丢失日志
- 灵活性:可以同时支持多种日志目的地(ES, Graylog等)
3. 环境准备与部署
3.1 前置条件检查
在开始部署前,请确保满足以下条件:
- 正常运行中的Kubernetes集群(版本1.16+)
- 集群节点已安装Docker(版本18.06+)
- 至少2GB可用内存(用于运行Elasticsearch)
- kubectl已配置并可以管理目标集群
可以通过以下命令验证集群状态:
bash复制kubectl get nodes
kubectl get pods -A
3.2 Elasticsearch单节点部署
对于测试环境,我们使用Docker快速部署Elasticsearch和Kibana:
bash复制# 部
