k8s查询日志操作

kubectl logs 常用于将容器中的日志查询或导出
可用参数:


-c, --container="": 容器名
 
-f, --follow[=false]: 指定是否持续输出日志
    --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
    --limit-bytes=0: 输出日志的最大字节数。默认无限制
 
-p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
    --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
    --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
    --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
    --timestamps[=false]: 在日志中包含时间戳

生活中我们会使用for循环来循环导出多个pod日志到一个文件中
例如1:

kubectl  -n < Namespace > get pod |grep <pod 名字关键字>  |awk '{print $1}'   |   while  read po ; do  kubectl -n  < Namespace >   logs  --since=30m  $po  >> Pod-Name_20211013.log ;done

例如2:

kubectl  -n < Namespace > get pod |grep <pod 名字关键字>  |awk '{print $1}'   |   while  read po ; do  kubectl -n  < Namespace >   logs  --since-time='2021-11-01T01:30:00.000+08:00'  $po  >> Pod-Name_20211013.log ;done
# --since-time='2021-11-01T01:30:00.000+08:00'
# --since-time 默认使用得是0区,默认相差8小时,不符合我们需求,需要自行更改

注意:上述所有日志可导出的时间取决于你docker服务中daemon.json日志这块的配置,如果做了限制则可能无法导出你想要时间的日志

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐