在CentOS上管理Kubernetes(k8s)日志,常用方案及工具如下:
一、核心日志收集方案
-
EFK Stack(推荐)
- 组件:Elasticsearch(存储+索引)、Fluentd(日志收集,以DaemonSet部署在节点)、Kibana(可视化)。
- 场景:企业级复杂日志分析,支持全文检索和长期存储。
- 部署:通过Helm快速安装,Fluentd采集节点日志并发送至Elasticsearch,Kibana展示。
-
Loki Stack(轻量级替代)
- 组件:Loki(日志聚合)、Promtail(轻量级采集)、Grafana(可视化)。
- 场景:中小集群、低成本运维,与Prometheus生态集成紧密。
-
Sidecar模式
- 原理:在Pod中附加专用日志收集容器,直接读取应用日志文件。
- 适用场景:需定制化日志处理的应用(如多日志文件场景)。
二、日志存储与轮转
- 本地存储:默认存放在节点
/var/log/containers/
目录,可通过logrotate
工具设置轮转规则(如按天分割、压缩)。
- 远程存储:对接NFS、S3等,避免本地磁盘占满。
三、日志查看与分析
- 命令行:使用
kubectl logs
查看单个Pod/容器日志,支持实时流和历史日志获取。
- 可视化工具:
- Kibana(EFK):支持日志搜索、图表分析、告警配置。
- Grafana(Loki):复用监控仪表盘,支持日志与指标关联分析。
四、生产环境最佳实践
- 日志分级:区分Error、Warning等级别,通过Fluentd过滤后分别存储。
- 资源优化:为Fluentd/Elasticsearch分配足够资源,避免因日志量过大导致性能问题。
- 安全加固:启用TLS加密传输,限制Kibana访问权限(如RBAC)。
五、工具对比
方案 |
优势 |
劣势 |
适用场景 |
EFK |
功能全面,支持复杂查询和长期存储 |
部署复杂,资源占用较高 |
企业级大规模集群 |
Loki |
轻量级,部署简单,与Grafana集成 |
功能较基础,不适合超大规模日志 |
中小型集群、快速部署 |
参考资料: