kubectl logs命令查看Pod容器日志kubectl logs是Kubernetes官方提供的核心日志查看工具,适用于大多数场景。
Running状态)。kubectl logs <pod-name>
-c参数指定容器名称。kubectl logs <pod-name> -c <container-name>
-f参数实时查看日志输出(类似tail -f),适合监控正在运行的服务。kubectl logs -f <pod-name>
--previous参数查看前一个实例的日志。kubectl logs --previous <pod-name>
--tail参数指定显示最后N行日志(如--tail=100显示最后100行),避免输出过多。kubectl logs --tail=100 <pod-name>
--since参数查看指定时间后的日志(支持5m、1h、2d等单位),或通过--since-time指定具体时间点(如2025-10-10T10:00:00Z)。kubectl logs --since=1h <pod-name>
kubectl logs --since-time="2025-10-10T10:00:00Z" <pod-name>
default),需通过-n参数指定命名空间。kubectl logs <pod-name> -n <namespace>
journalctl查看K8s组件系统日志K8s集群的核心组件(如kubelet、kube-apiserver、kube-controller-manager、kube-scheduler)的日志由系统日志服务journald管理,可通过journalctl命令查看。
journalctl -u kubelet -f # 实时跟踪
journalctl -u kubelet --since="2025-10-10" # 指定时间范围
journalctl -u kube-apiserver -f
journalctl -u kube-controller-manager -f
journalctl -u kube-scheduler -f
对于生产环境中的大规模K8s集群,手动使用kubectl查看日志效率低下,建议使用日志聚合工具集中收集、存储和分析日志。常见工具包括:
Filebeat(轻量级日志收集器),收集容器日志并发送至Elasticsearch存储;使用Kibana(可视化工具)进行日志查询、分析和可视化。filebeat-*),输入关键词(如error、pod-name)即可快速检索日志。kubectl logs,但支持多容器、多Pod的日志聚合,支持彩色输出、正则表达式过滤和实时跟踪。brew install stern # macOS(需安装Homebrew)
# 或通过Linux包管理器安装
stern <pod-name> -n <namespace> # 查看指定Pod的日志
stern "app=myapp" -c web -n <namespace> # 通过标签选择器查看多个Pod的日志
brew install kubetail # macOS
kubetail <pod-prefix> -n <namespace> # 聚合前缀匹配的Pod日志
若K8s组件或Pod日志无法定位问题,可查看CentOS节点的系统日志,排查底层系统故障(如网络、磁盘、内存问题)。
tail -f /var/log/messages # CentOS 7及以下
journalctl -xe # CentOS 8及以上(实时查看系统日志)
dmesg -T # 查看内核环缓冲区日志(包含硬件、驱动相关信息)
cluster-admin角色或自定义角色的get、list、read权限)。kubelet配置的containerLogMaxSize和containerLogMaxFiles参数控制),长期运行的Pod可能只保留最近几天的日志。若需保留更久日志,建议配置日志聚合工具。