无法获取Kubernetes(K8S) Pod日志调试,如何指定namespace执行kubectl logs?
kubectl日志查询问题解决
你遇到的报错是因为kubectl默认查询default命名空间下的资源,而kube-proxy部署在kube-system命名空间,两种解决方法如下:
- 单次查询时指定命名空间,追加
-n <命名空间名>参数即可:
直接查询当前容器日志:kubectl logs -n kube-system kube-proxy-tmt58
查看该Pod之前重启的旧容器日志:kubectl logs -n kube-system -p kube-proxy-tmt58
实时滚动查看日志:kubectl logs -n kube-system -f kube-proxy-tmt58 - 切换当前上下文的默认命名空间,之后不需要每次加
-n参数:
切换为kube-system默认命名空间:kubectl config set-context --current --namespace=kube-system
切换回默认的default命名空间:kubectl config set-context --current --namespace=default
K8s新手Pod、节点调试排查学习参考
- 基础排查流程:优先遵循「查状态->看事件->拉日志」的顺序
- 查Pod状态:
kubectl get pod -n <命名空间> -o wide,确认Pod运行状态、所在节点、IP信息 - 看Pod事件:
kubectl describe pod -n <命名空间> <Pod名称>,重点看末尾Events字段的报错信息,能定位绝大多数镜像拉取、调度、权限类问题 - 拉取容器日志:用上面的kubectl logs相关命令查看应用运行日志
- 查Pod状态:
- 节点常用排查命令
节点状态查看:kubectl get node -o wide
节点详情与事件:kubectl describe node <节点名称>,可以查看节点资源剩余、污点、调度状态、kubelet上报的异常事件
节点资源占用:kubectl top node、kubectl top pod -n <命名空间>,排查CPU、内存资源占用过高问题
节点组件日志排查:登录节点后执行journalctl -u kubelet -f查看kubelet运行日志,执行crictl logs <容器ID>查看容器运行时层面的日志 - 实用调试技巧
无调试工具的Pod排查可以用kubectl debug命令,注入临时调试容器排查网络、文件问题,不需要修改业务镜像
节点无法远程登录时可以用kubectl debug node/<节点名>创建节点调试Pod,直接挂载节点根目录进行排查 - 系统学习参考
优先看Kubernetes官方文档的故障排查分类章节,内容权威更新及时,覆盖所有基础故障场景
其次参考云原生社区公开的生产故障排查手册,有大量真实案例可以参考,快速积累实战经验
内容的提问来源于stack exchange,提问作者Artur Dino
相关产品推荐
相关产品推荐

