繁体   English   中英

Kubernetes 上的 Jenkins - 从 kubectl 获取容器日志

[英]Jenkins on Kubernetes - Get logs of containers from kubectl


我开始怀疑这个问题是属于这里还是属于 StackOverflow; 我在这里试一下,问题如下:

我正在与 Kubernetes 上的 Jenkins 合作,但我无法检索管道上使用的容器的日志。
例如使用以下管道:

 pipeline { agent { kubernetes { containerTemplate { name 'alpine' image 'alpine' command 'tail -f /dev/null'} } } stages { stage('sample'){ steps{ container('alpine'){ echo "Hello world" sleep 600 } } } } }

一切正常,我可以在 Jenkins 控制台上看到“Hello world”,但我也想通过命令kubectl get logs pod-name -c alpine将其作为 output 获取。 我想kubectl logs显示在容器中用作入口点的命令(在本例中为tail -f /dev/null )在stdout / stderr上写入的内容,这就是我没有得到“Hello world”的原因,但我不知道如何实现我想要的。

我还看到了 Docker 文档中建议的解决方法:

官方的 nginx 镜像创建了一个从 /var/log/nginx/access.log 到 /dev/stdout 的符号链接,并创建了另一个从 /var/log/nginx/error.log 到 /dev/stderr 的符号链接,覆盖了日志文件并导致日志被发送到相关的特殊设备。 请参阅 Dockerfile。

但我认为该解决方案不适合我的问题。

这对我有用

containerTemplate { name 'alpine', image 'alpine', ttyEnabled: true, command 'cat' }

参考: https://github.com/jenkinsci/kubernetes-plugin#container-group-support

暂无
暂无

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

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