繁体   English   中英

Kubernetes-如何在容器中获取pod日志

[英]Kubernetes - How to get pod logs within container

我在pod中有两个容器,一个容器是一个应用程序,用于写入日志(stdout / stderr),第二个容器用于读取该应用程序容器的日志,并将其写入logs.txt文件。

我的问题是,如何告诉第二个容器读取应用程序容器的日志?

当我在主机上(使用k8s)时,可以运行:

 $kubectl logs -f my_pod >> logs.txt

并获取pod的日志。

但是,如何告诉一个容器读取同一容器中另一个容器的日志?

我对docker做了类似的事情:我挂载了主机docker的docker.sock,并做了$docker logs -f app_container >> logs.txt但我不能(据我所知)将kubectl挂载到容器中pod,运行kubectl命令。

那么,您认为我能做到吗?

您可以在两个容器上安装一个卷,在“ app”容器上的该卷上写入一个日志文件,然后从另一个容器中的该日志文件读取。

首选的解决方案可能是使用某种logshipper或sidecar从stdout刮取日志

(旁注:您可能永远不应该将docker.sock安装到容器中或尝试从容器中的一个容器运行kubectl到集群,因为本质上是让该容器对集群进行控制,这是安全性,恕我直言。无论出于何种原因,您仍然必须这样做,请确保集群安全性非常严格)

您可以使用http请求从内部获取其他pod日志。 这是文档

基本上,您可以使用curl来执行以下请求:

GET /api/v1/namespaces/{namespace}/pods/{name}/log

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM