温馨提示×

Debian上K8S部署的日志如何查看

小樊
34
2025-12-30 19:00:07
栏目: 智能运维

Debian上K8S日志查看指南

一 前置检查

  • 确认已安装并配置好 kubectl,可正常访问集群:
    • 查看节点状态:kubectl get nodes
    • 查看系统组件运行状态:kubectl get pods -n kube-system
  • 以上命令能正常返回即表明 kubeconfig 配置正确,可继续下述日志查看操作。

二 查看应用与部署日志

  • 查看指定 Pod 日志:kubectl logs <pod-name>
  • 指定 容器(多容器 Pod):kubectl logs <pod-name> -c <container-name>
  • 实时跟踪:kubectl logs -f <pod-name>
  • 时间范围与行数:
    • 最近 5 分钟kubectl logs <pod-name> --since=5m
    • 指定时间之后:kubectl logs <pod-name> --since-time=2025-12-30T10:00:00Z
    • 最后 N 行kubectl logs <pod-name> --tail=<N>
  • 指定 命名空间kubectl logs <pod-name> -n <namespace>
  • 标签 查询:kubectl logs -l app=myapp -c web
  • 查看 上一次崩溃容器 日志:kubectl logs <pod-name> --previous
  • 为每行添加 时间戳kubectl logs <pod-name> --timestamps
  • 查看 Deployment 关联 Pod 的日志(Deployment 本身无日志,需查其 Pod):
    • 列出 Pods:kubectl get pods -l app=<deployment-name>
    • 查看日志:kubectl logs deployment/<deployment-name>
    • 实时查看:kubectl logs -f deployment/<deployment-name>
    • 仅看最近 N 行kubectl logs --tail=<N> deployment/<deployment-name>
  • 提示:Deployment 的日志来自其管理的 Pod,如 Pod 已重启或重建,使用 --previous 查看上一次实例日志。

三 查看集群组件与节点日志

  • 查看 kubelet 等系统组件日志(Debian 常用 systemd):
    • 实时查看:journalctl -u kubelet -f
    • 查看最近日志:journalctl -u kubelet | tail
    • 其他组件:journalctl -u kube-apiserverjournalctl -u kube-scheduler
  • 查看 节点 事件与状态:kubectl describe node <node-name>
  • 查看 集群事件(定位调度、镜像拉取、健康检查等事件):kubectl get events --sort-by=.metadata.creationTimestamp
  • 说明:在 kubeadm 部署的集群中,除 kubelet 外,控制面组件多以 Pod 形式运行,可用 kubectl logs <pod-name> -n kube-system 查看其日志。

四 查看容器与宿主机日志文件

  • 容器标准输出最终写入宿主机文件,路径取决于容器运行时:
    • Docker/var/lib/docker/containers/<container-id>/<container-id>-json.log
    • 进入容器查看应用自身日志文件:kubectl exec -it <pod-name> -n <namespace> -- bash
  • 说明:kubectl logs 读取的正是容器运行时写入宿主机的这些日志文件。

五 集中化日志方案建议

  • 大规模集群 中,建议使用 Fluentd/Elasticsearch/Kibana(EFK)Loki/Promtail/Grafana 做日志聚合与检索,便于统一存储、搜索与可视化分析。

0