我将我的spring boot应用程序作为使用docker Image构建的容器在Openshift上运行。我已在应用程序中启用日志记录并打印所有日志。
现在,我想检查POD的日志文件以检查是否有任何错误,因为我的请求失败了。我确实知道命令行选项oc logs -f <podname>
那只是将日志打印到cmd提示符下,但是我希望将整个日志从服务器复制到本地文件。
这样我就可以找到一些特定的行或错误。有可能吗?
答案 0 :(得分:1)
按照上面的建议尝试oc rsync
:
oc rsync <pod>:/path/to/file localfilename
但是我的情况是:
WARNING: cannot use rsync: rsync not available in container <pod>
所以我尝试了oc cp
,它起作用了:
oc cp <namespace>/<pod>:/path/to/file local_filename
如果不指定名称空间,复制命令将不起作用(并且不显示错误消息),因此我不得不将pod属于哪个项目。
<pod>
是窗格名称<namespace>
实际上是<pod>
所属的项目。oc project
列出当前项目,或oc projects
列出所有项目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
答案 1 :(得分:0)
您可以使用rsync命令将文件复制到Pod中或从Pod中复制出来。
或者像您一样使用logs
命令,然后直接重定向到文件,以便可以在本地对其进行编辑:
oc logs <podname> &> /path/to/file
答案 2 :(得分:0)
那只是将日志打印到cmd提示符下,但是我希望将整个日志从服务器复制到本地文件。这样我就可以找到一些特定的行或错误。有可能吗?
在运行Pod的节点上检查/var/log/containers
怎么办?
所有容器日志都是<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
...
答案 3 :(得分:0)
从oc cli工具登录,然后切换到项目,执行:
oc logs <podname> >> <podname>.log
答案 4 :(得分:0)
要将文件从Fabric Pod下载到本地计算机
oc登录URL--token =
oc rsh
只需检查它是否连接到POD并执行ls -lh(它应该给出响应)
oc rsync
答案 5 :(得分:0)
从您的oc CLI工具中执行:
oc logs pod_name -n project_name > filename.log
答案 6 :(得分:0)
日志文件在当前目录中生成。
答案 7 :(得分:0)
oc日志pod_name -n project_name> filename.log
这对我有用
答案 8 :(得分:0)
对我来说,它的工作方式是将包含我打算从 pod 获取的日志的文件夹复制到默认路径,即当您登录 pod 时 pod 发送给您的路径 然后申请:
oc cp <namespace>/<pod>:<myFolder> .