Debian 上查看 Kubernetes 日志的实用指南
在 Debian 上,Kubernetes 的日志通常分为两类:一是 应用容器日志(通过 kubectl logs 获取),二是 节点组件日志(如 kubelet、kube-proxy 等,通过 journalctl 查看)。下面给出常用命令与高效排查路径,覆盖日常排错与长期留存需求。
查看应用容器日志
- 基本查看
- 查看指定 Pod:kubectl logs
- 指定 命名空间:kubectl logs -n
- 多容器 Pod 指定容器:kubectl logs -c 或 kubectl logs --container=
- 实时与时间段
- 实时跟踪:kubectl logs -f
- 最近 N 行:kubectl logs --tail=
- 最近 5m 日志:kubectl logs --since=5m
- 指定时间之后:kubectl logs --since-time=2025-11-15T10:00:00Z
- 显示时间戳:kubectl logs --timestamps
- 历史与多 Pod
- 查看已终止容器日志:kubectl logs --previous
- 按标签查看多个 Pod:kubectl logs -l app=myapp -c
- 实用组合示例
- 实时查看 default 命名空间、标签为 app=myapp 的 web 容器,并显示时间戳:kubectl logs -f -l app=myapp -c web --timestamps
查看节点与控制平面组件日志
- 使用 journalctl 查看节点组件(kubelet、kube-proxy 等)
- kubelet:sudo journalctl -u kubelet -f
- kube-proxy:sudo journalctl -u kube-proxy -f
- 查看 kube-scheduler:sudo journalctl -u kube-scheduler
- 查看 kube-apiserver:sudo journalctl -u kube-apiserver
- 使用 systemctl 检查服务状态
- kubelet:sudo systemctl status kubelet
- kube-proxy:sudo systemctl status kube-proxy
- 补充
- 系统级日志:/var/log/messages 也可能包含相关异常信息
事件与排错辅助命令
- 查看 Pod 详细信息与事件:kubectl describe pod -n
- 查看 节点 详细信息与事件:kubectl describe node
- 查看 命名空间 事件:kubectl get events -n
- 快速定位异常:先 get pods 确认状态,再 describe 看事件,最后 logs 查容器输出
集中式日志方案与可视化工具
- EFK(Elasticsearch + Fluentd + Kibana):Fluentd DaemonSet 采集节点与容器日志,写入 Elasticsearch,用 Kibana 检索与可视化,适合大规模与长期留存。
- Loki + Grafana:轻量级聚合,配合 Grafana 查询与面板展示,资源开销小,适合 Kubernetes 环境。
- Kubernetes Dashboard:Web UI 直接查看 Pod 日志与集群状态,便于快速浏览。
- Stern:多 Pod 日志 tail 工具,便于同时跟踪一组 Pod。