Kubernetes的核心组件(如kubelet、kube-proxy)在Debian上通常作为systemd服务运行,其日志可通过journalctl命令查看。该工具能集中管理systemd服务的日志,支持实时跟踪、时间过滤等功能。
sudo journalctl -u kubelet -f(-u指定服务名,-f实时输出)sudo journalctl -u kube-proxy --since "2025-09-20"(--since按时间范围过滤)sudo journalctl | grep kube(结合grep过滤关键词)若需查看应用容器(而非Kubernetes组件)的日志,kubectl logs是最常用的命令。它能直接获取Pod中容器的标准输出(stdout)和标准错误(stderr),适用于调试应用问题。
kubectl logs <pod-name>(<pod-name>为Pod名称,可通过kubectl get pods获取)kubectl logs -f <pod-name>(类似tail -f,持续输出新日志)kubectl logs <pod-name> -c <container-name>(-c指定容器名,需Pod内有多个容器)kubectl logs -p <pod-name>(-p查看容器上次崩溃前的日志)kubectl logs <pod-name> -n <namespace>(-n指定命名空间,默认为default)部分Kubernetes组件(如kube-apiserver、kube-controller-manager、kube-scheduler)的日志默认输出到系统日志中,可通过journalctl查看。若组件以独立进程运行(如某些自定义部署),可能需要检查其配置的日志文件路径(如/var/log/kube-apiserver.log,但Debian默认较少见)
若需直接访问容器文件系统中的日志(如应用写入的文件),可通过kubectl exec进入容器查看。不同容器运行时的默认日志路径不同:
/var/lib/docker/containers/<container-id>/<container-id>-json.log(需替换<container-id>,可通过docker ps获取)/var/log/pods/<namespace>_<pod-name>_<pod-uid>/<container-name>/0.log/var/log/containers/<pod-name>_<namespace>_<container-name>-<random-string>.logcat、less等命令查看日志文件sudo)访问系统日志或容器日志。