以下是在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生態中最常用的日志管理方案。