k8s logs查询日志常用命令
创始人
2024-11-10 07:11:18

本文档主要是针对k8s日志进行说明。

node、pod、容器关系

一台物理机或者虚机作为node,node里面有多个pod,pod里面可以有1个或者多个容器

常用命令整理

查询有哪些pod

kubectl get pod #默认是查询命名空间是default的pod
kubectl get pod --all-namespaces #查询所有命名空间下
kubectl get pod -A #查询所有命名空间下简写
kubectl get pod -A |grep podname #过滤podname

查询指定pod的日志

kubectl logs podname 

查询指定pod下的指定容器的日志

kubectl logs podname -c containname

查询一个服务部署在多个pod下的日志

方式1:每个pod日志查询,不方便需要开多个终端监控各个pod查看日志
kubectl logs podname -c containname


方式2:使用标签查询,一个命令查询这几个pod的日志
kubectl get pod --show-labels | grep podname #查询指定podname的标签,若是有一致的标签,使用标签统一查看相同服务下的pod的日志
kubectl logs -l 标签名

日志查看最新几行,以及实时跟踪

kubectl logs -l 标签名 -n 命名空间名 --tail 5 -f

综上常用这两句查询日志

kubectl logs podname -n 命名空间名称 --tail5 -f   #通过pod名称查询实时日志

kubectl logs -l 标签名 -n 命名空间名 --tail 5 -f #通过标签名称查询实时日志

详细说明

kubectl命令模板

kubectl [command] [TYPE] [NAME] -o=

-o 参数:
-o=custom-columns=    根据自定义列名进行输出,以逗号分隔
-o=custom-colimns-file=    从文件中获取自定义列名进行输出
-o=json    以JSON格式显示结果
-o=jsonpath=