Kubernetes 记录一段时间范围内的转储

Val*_*kov 10 logging datetime dump kubernetes

是否可以获取指定时间范围内的 Kubernetes 日志?

我现在能做的就是使用 cmd 转储单个 pod 的最后一小时日志kubectl logs > dump.log

但出于调试原因,有必要获取上周的日志。我在 Kubernetes 日志中找不到任何执行此操作的功能。

唯一的想法是附加一些外部服务(例如 Kibana)来收集日志,但也许内置的 Kubernetes 补救措施允许这样做?

谢谢。

goh*_*m'c 13

...the last-hour log for the single pod

要检索最近 1 小时的日志,您可以执行此操作kubectl logs <pod> --since=1h。从 kubectl 帮助断言更多选项:

--since=0s:仅返回比相对持续时间(例如 5s、2m 或 3h)更新的日志。默认为所有日志。只能使用“since-time”/“since”之一。

--since-time='':仅返回特定日期之后的日志 (RFC3339)。默认为所有日志。只能使用“since-time”/“since”之一。

--tail=-1:要显示的最近日志文件的行。没有选择器时默认为 -1,如果提供了选择器,则显示所有日志行,否则为 10。


小智 12

AWK是 Unix/Linux 系统中用于此类逻辑运算的出色工具

因此,要显示两个时间范围之间的日志(例如:上午 10 点到上午 11 点):

  1. 使用--since-timeawk
kubectl logs pod_name --since-time=2022-04-30T10:00:00Z | awk '$0 < "2022-04-30 11:00:00"'
Run Code Online (Sandbox Code Playgroud)
  1. 仅使用awk
kubectl logs pod_name | awk '$0 > "2022-04-30 10:00:00"' | awk '$0 < "2022-04-30 11:00:00"'
Run Code Online (Sandbox Code Playgroud)

注意:请根据日志输出在 awk 命令中使用 date_time 格式。