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

时间:2019-10-03 10:55:54

标签: java spring-boot docker openshift

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

9 个答案:

答案 0 :(得分:1)

oc rsync

按照上面的建议尝试oc rsync

oc rsync <pod>:/path/to/file localfilename

但是我的情况是:

WARNING: cannot use rsync: rsync not available in container <pod>

oc cp

所以我尝试了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

文档:

OpenShift 4.3 Oficial Documentation - copying files

答案 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 login命令连接到Fabric实例

    oc登录URL--token = >

  • 检查以使用终端连接Pod

    oc rsh

    只需检查它是否连接到POD并执行ls -lh(它应该给出响应)

  • 要将文件从远程POD复制到本地:

    oc rsync /logs.txt本地文件名

答案 5 :(得分:0)

从您的oc CLI工具中执行:

oc logs pod_name -n project_name > filename.log

答案 6 :(得分:0)

  1. 提取oc登录命令。
  2. 使用cli客户端上的登录命令登录oc。
  3. 导航到托管pod的名称空间-> oc项目项目名称
  4. 键入-> oc日志podname> pods_logs.txt

日志文件在当前目录中生成。

答案 7 :(得分:0)

oc日志pod_name -n project_name> filename.log

这对我有用

答案 8 :(得分:0)

对我来说,它的工作方式是将包含我打算从 pod 获取的日志的文件夹复制到默认路径,即当您登录 pod 时 pod 发送给您的路径 然后申请:

oc cp <namespace>/<pod>:<myFolder> .