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

Docker Kubernetes-如何在容器中获取pod日志,docker,kubernetes,kubectl,Docker,Kubernetes,Kubectl,我的pod中有两个容器,一个容器是一个应用程序,用于写入日志(stdout/stderr),第二个容器用于读取应用程序容器的日志,并将其写入logs.txt文件 我的问题是,如何让第二个容器读取应用程序容器的日志 当我在主机上(使用k8s)时,我可以运行: $kubectl logs -f my_pod >> logs.txt 拿到吊舱的日志 但是我怎么能告诉一个容器读取同一个吊舱内另一个容器的日志呢 我对dockers做了类似的事情: 我安装了主机docker的docker.s

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

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

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

 $kubectl logs -f my_pod >> logs.txt
拿到吊舱的日志

但是我怎么能告诉一个容器读取同一个吊舱内另一个容器的日志呢

我对dockers做了类似的事情: 我安装了主机docker的docker.sock,并执行了
$docker logs-f app\u container>>logs.txt
但我不能(据我所知)将库贝特尔装载到吊舱中的容器中,以运行库贝特尔命令


那你觉得我怎么能做到

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

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

(旁注:您可能永远都不应该将docker.sock装载到容器中,或者尝试从容器中的容器运行kubectl到集群,因为您本质上是让容器控制集群,这是一种安全性问题。
如果出于任何原因仍必须这样做,请确保群集安全性非常严格)

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

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

(旁注:您可能永远都不应该将docker.sock装载到容器中,或者尝试从容器中的容器运行kubectl到集群,因为您本质上是让容器控制集群,这是一种安全性问题。
如果出于任何原因仍然必须这样做,请确保集群安全性非常严格)

您可以使用http请求从内部获取其他pod日志。这是你的电话号码

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


GET/api/v1/namespace/{namespace}/pods/{name}/log
您可以使用http请求从内部获取其他pod日志。这是你的电话号码

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


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

我无法触摸应用程序容器(使其写入日志fle)。我可以访问k8s yaml(用于部署)、主机和侧车容器。我可以让应用程序容器在不触碰它的情况下写入文件吗?@arnot您可以将stdout+stderr重定向到文件。您可以覆盖主应用程序部署的命令/参数。请看,我无法触摸应用程序容器(使其写入日志fle)。我可以访问k8s yaml(用于部署)、主机和侧车容器。我可以让应用程序容器在不触碰它的情况下写入文件吗?@arnot您可以将stdout+stderr重定向到文件。您可以覆盖主应用程序部署的命令/参数。看,我试着看看它是怎么做的,但我不明白我是在哪个地址做卷曲的。你知道吗?@aronot请看一看我试着看它是怎么做的,但我不知道我是在哪个地址做卷发的。“你知道吗?”阿罗诺请看一看