我目前有一个Cronjob,它有一个在某个时间段调度并以模式运行的作业。我想将每个pod运行的日志导出到temp/logs/FILENAME
路径下的一个文件中其中FILENAME
是正在创建的运行的时间戳。我该怎么做呢?希望能提供一个解决方案。如果您需要添加脚本,那么请使用python或shell命令。谢谢你。
根据Kubernetes日志架构:
在集群中,日志应该有单独的存储和生命周期独立于节点、pod或容器。这个概念叫做集群级别的日志记录。
集群级日志架构需要一个单独的后端来存储、分析和查询日志。Kubernetes不提供本机日志数据存储解决方案。相反,有很多日志记录与Kubernetes集成的解决方案
这将我们带到了集群级日志架构:
而Kubernetes并没有提供集群级的本地解决方案日志记录,有几种常见的方法可以考虑。在这里有一些选项:
使用在每个节点上运行的节点级日志代理。
包含一个专用的sidecar容器,用于登录应用程序pod。
将日志从应用程序内直接推送到后端。
Kubernetes不提供它自己的日志聚合。因此,您需要一个本地代理来收集数据并将其发送到中央日志管理。请看下面的一些选项:
-
Fluentd
-
麋鹿堆栈
您可以找到在/var/log/containers/*.log
上PODs生成的所有日志在每个Kubernetes节点上。如果愿意,您可以使用简单的脚本手动处理它们,但是您必须记住,pod可以在任何节点上运行(如果不受限制的话),并且节点可能来来往往。
考虑将日志发送到外部系统,如ElasticSearch或Grafana Loki,并在那里管理它们。