有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文将提供在进行 构建深度学习容器镜像在 TKE Serverless 上运行深度学习 实践时可能遇到的常见问题解答。

日志如何进行持久存储?

因为 TKE Serverless 即用即消的特性,导致如果想要查看日志,必须当且仅当 Pod 还在 Running 状态时查看。一旦 Pod 状态变为 Completed ,将会出现如下报错:
Error from server (InternalError): Internal error occurred: can not found connection to pod ***
以下为您介绍能将日志持久存储的方法:

方式一:重定向

重定向方法最为简单,只需将 kubectl logs 输出到终端的 stdout 转向输出到文件中即可持久化存储。执行命令如下:
kubectl logs -f tf-cnn >> info.log

但使用重定向方法时需要注意,输出流不会流向终端,也就是说在终端上将无法看到日志滚到哪一步。如果在将命令输出保存到文件中的同时,还需要将内容也输出到屏幕,有如下两种方法:
使用管道 + tee 命令,执行命令如下:
kubectl logs -f tf-cnn |tee info.log

使用 logsave 命令,也可以做到将命令输出保存到文件的同时将内容页输出到屏幕中,执行命令如下:
logsave [-asv] info.log kubectl logs -f tf-cnn

说明
logsave 相较于tee 的好处是,logsave 每次输入会记录下时间,并制造间隔,观感上也更便于查找某一段日志。
上述三条命令同时存在弊端,因为都是基于 kubectl logs 输出的重定向,使用时必须在 Running 状态时运行,起到的作用只是在 Completed 后依然能查看日志。重定向方法可适用于少量的日志,不存在大量的日志输出和检索需求的场景下。如果您的需求不高,那么推荐您使用重定向方法。

方式二:配置日志采集

在 TKE Serverless 集群中,可以通过 自定义资源(CRD)配置日志采集
开启日志采集后,新建如下图所示日志规则:



在检索分析端可以看到,时间粒度为毫秒级,而更小尺度也按顺序输出。



说明:
CRD 配置的日志采集支持通过正则划分原始日志。
配置日志采集可能遇到的问题:
如果选择 CRD 配置日志采集,请选择 Chrome 内核的浏览器(最新版 Edge、Chrome 浏览器)进行配置,而不是旧版 Edge 等。因为前端已经可能不支持旧版内核,会出现日志样例无法正常显示、正则表达式自动生成无法正常框取等问题。
在用 CRD 配置日志采集后,在新建 Pod 时无需其他操作,会自动获取输出的 log 。如果未采集到,考虑是否存在机器组已满的问题。使机器组额度有空余后,重启 cls-provisioner 的 Pod 即可。