我的 Spring Boot 应用程序作为使用 docker Image 构建的容器在 Openshift 上运行。我已在应用程序中启用日志记录并打印所有日志。现在我想检查 POD 的日志文件以检查是否有任何错误,因为我的请求失败了。我确实知道命令行选项oc logs -f <podname> ,它只是将日志打印到cmd提示符中,但我希望将整个日志从服务器复制到本地文件。这样我就可以找到一些特定的行或错误。有可能吗?
6 回答
慕容708150
TA贡献1831条经验 获得超4个赞
您可以使用rsync命令将文件复制到 pod 中或从 pod 中复制出来。
或者像您一样使用logs
命令,然后重定向到一个文件,以便您可以在本地编辑它:
oc logs <podname> &> /path/to/file
MM们
TA贡献1886条经验 获得超2个赞
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
守着星空守着你
TA贡献1799条经验 获得超8个赞
这只是将日志打印到cmd提示符中,但我希望将整个日志从服务器复制到本地文件。这样我就可以找到一些特定的行或错误。有可能吗?
/var/log/containers
检查节点上哪些 Pod 正在运行怎么样?所有容器日志都是符号链接<pod name>_<namespace>_<container name>-<hash>
格式。基本上,oc logs
也指那里相同的容器日志。
例如>
node ~# ls -1 /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 ...
幕布斯7119047
TA贡献1794条经验 获得超8个赞
对我来说,它的工作方式是将包含我打算从 pod 获取的日志的文件夹复制到您登录 pod 时 pod 发送给您的默认路径,然后应用:
oc cp <namespace>/<pod>:<myFolder> .
添加回答
举报
0/150
提交
取消