在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集成 |
功能較基礎,不適合超大規模日志 |
中小型集群、快速部署 |
參考資料: