运行kubectl日志可以看到一个Kubernetes容器的stderr/stdout。
我如何获得一组pod的聚合stderr/stdout,最好是由某个复制控制器创建的那些?
运行kubectl日志可以看到一个Kubernetes容器的stderr/stdout。
我如何获得一组pod的聚合stderr/stdout,最好是由某个复制控制器创建的那些?
当前回答
你可以从kubectl logs -h中得到帮助,根据信息,
kubectl logs -f deployment/myapp -c myapp --tail 100
-c是容器名称,——tail将显示最新的num行,但这将选择部署的一个pod,而不是所有pod。这是你必须记住的。
kubectl logs -l app=myapp -c myapp --tail 100
如果想显示所有pod的日志,可以使用-l并指定一个标签,但同时不使用-f。
其他回答
以前提供的解决方案并不是最优的。kubernetes团队自己在一段时间前提供了一个解决方案,称为stern。
stern app1
它还匹配正则表达式,默认情况下执行tail和-f (follow)。一个很好的好处是,它显示了生成日志的pod。
app1-12381266dad-3233c foobar log
app1-99348234asd-959cc foobar log2
抓取go-binary for linux或通过brew for OSX安装。
https://kubernetes.io/blog/2016/10/tail-kubernetes-with-stern/
https://github.com/wercker/stern
@johan的回答让我想到了一句话:
for i in $(kubectl get pods -n default |cut -d" " -f1); do kubectl logs $i -n default; done
对我有用:
Kubectl logs -n namespace -l app=label -c container
在前面答案的基础上,如果添加-f,可以跟踪日志。
kubectl logs -f deployment/app
不确定这是否是一个新事物,但随着部署,可以这样做:
kubectl logs deployment/app1