以下是在CentOS上进行K8s日志管理的常用技巧及工具:
一、日志收集方案
- EFK堆栈(推荐)
- Fluentd:作为日志收集器,部署为DaemonSet,从节点或容器收集日志并发送至Elasticsearch。
- Elasticsearch:存储和索引日志数据,支持大规模日志检索。
- Kibana:可视化日志数据,提供搜索、分析和告警功能。
- Filebeat
- 作为Sidecar容器部署在Pod中,或通过DaemonSet在节点上运行,收集日志并转发至Elasticsearch。
- 第三方工具
- Logstash:替代Fluentd,支持更复杂的日志处理逻辑。
- Datadog/Splunk:第三方服务,提供集中化日志管理和高级分析功能。
二、日志存储策略
- 本地存储:直接存储在节点的
/var/log
目录,适合小规模集群。
- 远程存储:通过NFS、S3等挂载到Pod,实现日志集中存储,便于长期保留和分析。
三、日志轮转与清理
四、日志分析与监控
- Kibana:通过可视化界面搜索、过滤日志,支持仪表盘展示关键指标。
- Prometheus+Grafana:监控日志系统的健康状态,设置异常告警规则。
五、最佳实践
- 日志分类:按应用、环境(如
prod
/dev
)分类存储,便于快速定位问题。
- 结构化日志:采用JSON格式输出日志,包含时间戳、服务名等元数据,方便分析。
- 资源优化:避免在Pod中直接输出大量日志到Stdout,优先通过Sidecar或DaemonSet收集。
以上方案可根据集群规模和需求选择,EFK堆栈是K8s生态中最常用的日志管理方案。