猿问

如何将openshift中的POD日志获取到本地文件

我的 Spring Boot 应用程序作为使用 docker Image 构建的容器在 Openshift 上运行。我已在应用程序中启用日志记录并打印所有日志。现在我想检查 POD 的日志文件以检查是否有任何错误,因为我的请求失败了。我确实知道命令行选项oc logs -f <podname> ,它只是将日志打印到cmd提示符中,但我希望将整个日志从服务器复制到本地文件。这样我就可以找到一些特定的行或错误。有可能吗?



莫回无
浏览 174回答 6
6回答

慕容708150

您可以使用rsync命令将文件复制到 pod 中或从 pod 中复制出来。或者像您一样使用logs命令,然后重定向到一个文件,以便您可以在本地编辑它:oc logs  <podname> &> /path/to/file

MM们

OC同步按照上面的建议尝试oc rsync:oc rsync <pod>:/path/to/file localfilename但就我而言,我得到了:WARNING: cannot use rsync: rsync not available in container <pod>奥卡普所以我尝试了 try oc cp,它成功了:oc cp <namespace>/<pod>:/path/to/file local_filename如果不指定命名空间,复制命令将无法工作(并且不显示错误消息),因此我必须知道 pod 属于哪个项目。识别 pod 的项目/命名空间<pod>是 Pod 名称<namespace>实际上是所属的项目<pod>。用于oc project列出当前项目,或oc projects列出所有项目或者或者在所有项目中搜索pod名称oc get pods --all-namespaces | egrep <pod>重要的提示# !!!Important Note!!!  # Requires that the 'tar' binary is present in your container  # image.  If 'tar' is not present, 'kubectl cp' will fail. # about my environment  # oc version  # oc 3.6, openshift 3.7, kubernetes 1.7

有只小跳蛙

从您的 oc CLI 工具执行:oc&nbsp;logs&nbsp;pod_name&nbsp;-n&nbsp;project_name&nbsp;>&nbsp;filename.log

守着星空守着你

这只是将日志打印到cmd提示符中,但我希望将整个日志从服务器复制到本地文件。这样我就可以找到一些特定的行或错误。有可能吗?/var/log/containers检查节点上哪些 Pod 正在运行怎么样?所有容器日志都是符号链接<pod name>_<namespace>_<container name>-<hash>格式。基本上,oc logs也指那里相同的容器日志。例如>node&nbsp;~#&nbsp;ls&nbsp;-1&nbsp;/var/log/containers alertmanager-main-0_openshift-monitoring_alertmanager-123...789.log alertmanager-main-0_openshift-monitoring_alertmanager-456...123.log alertmanager-main-0_openshift-monitoring_alertmanager-proxy-789...456.log ...

翻阅古今

从oc cli工具登录,然后切换到项目,执行:oc&nbsp;logs&nbsp;<podname>&nbsp;>>&nbsp;<podname>.log

幕布斯7119047

对我来说,它的工作方式是将包含我打算从 pod 获取的日志的文件夹复制到您登录 pod 时 pod 发送给您的默认路径,然后应用:oc&nbsp;cp&nbsp;<namespace>/<pod>:<myFolder>&nbsp;.
随时随地看视频慕课网APP

相关分类

Java
我要回答