在Debian系統上管理Kubernetes(K8S)集群日志,需圍繞日志收集、存儲、分析、可視化及優化展開。以下是具體實現方法與最佳實踐:
最直接的日志管理方式是使用kubectl logs命令,適用于快速查看Pod日志:
# 查看指定Pod的實時日志
kubectl logs -f <pod-name>
# 查看指定容器的日志(Pod內有多個容器時)
kubectl logs -f <pod-name> -c <container-name>
# 查看最近100行日志
kubectl logs --tail=100 <pod-name>
該工具無需額外部署,是日常排查問題的首選。
EFK是K8S生態中最成熟的日志管理方案,適合需要復雜搜索、可視化及長期存儲的場景。
/var/lib/docker/containers)、系統日志(/var/log)并發送至Elasticsearch。apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-system
spec:
selector:
matchLabels:
name: fluentd
template:
metadata:
labels:
name: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch.logging.svc.cluster.local"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
5601),用于查詢、分析日志并創建儀表盤。Loki是Grafana Labs推出的輕量級日志方案,適合資源有限、追求低開銷的環境(如Debian服務器)。
grafana/loki-stack chart),收集/var/log/pod、/var/lib/docker/containers中的日志,通過Grafana Dashboard展示。logrotate工具限制日志文件大?。ㄈ?code>maxsize 100M)和保留時間(如rotate 7),防止磁盤空間耗盡。示例配置:/var/log/*.log {
daily
rotate 7
maxsize 100M
compress
missingok
notifempty
}
--v=2(中等詳細度),避免過多噪音;應用日志級別設為INFO或WARN。以上方案覆蓋了Debian上K8S日志管理的全流程,可根據集群規模(如節點數量、日志量)、預算(如是否需要長期存儲)及需求(如是否需要復雜分析)選擇合適的工具組合。