我试了这个命令:
kubectl logs --tail
我得到了这个错误/帮助输出:
Error: flag needs an argument: --tail
Aliases:
logs, log
Examples:
# Return snapshot logs from pod nginx with only one container
kubectl logs nginx
# Return snapshot logs for the pods defined by label app=nginx
kubectl logs -lapp=nginx
# Return snapshot of previous terminated ruby container logs from pod web-1
kubectl logs -p -c ruby web-1
# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1
# Display only the most recent 20 lines of output in pod nginx
kubectl logs --tail=20 nginx
# Show all logs from pod nginx written in the last hour
kubectl logs --since=1h nginx
# Return snapshot logs from first container of a job named hello
kubectl logs job/hello
# Return snapshot logs from container nginx-1 of a deployment named nginx
kubectl logs deployment/nginx -c nginx-1
我只是想查看所有的日志,这不是一件很常见的事情吗?我如何跟踪一个集群的所有日志?
7条答案
按热度按时间9w11ddsr1#
kail
仅适用于Linux和macOS,但Stern也适用于Windows。它可以基于例如名称的正则表达式匹配来进行pod匹配,然后可以遵循日志。
要跟踪所有pod而不打印
default
命名空间中的任何先前日志,您可以运行例如:对于所有的事情,包括在
kube-system
命名空间中发生的内部事情:或者,您可以跟踪所有
login-.*
容器,并使用x3naxklr2#
如果您不介意使用第三方工具,
kail
完全可以实现您所描述的功能。从所有匹配的pod的所有容器中流出日志。[...]在没有参数的情况下,kail匹配集群中的所有pod。
ma8fv8wu3#
你唯一能做的就是使用标签选择器获取多个pod的日志,如下所示:
要获取整个集群的所有日志,您必须设置集中式日志收集,如Elasticsearch,Fluentd和Kibana。最简单的方法是使用Helm charts安装,如下所述:https://linux-admin.tech/kubernetes/logging/2018/10/24/elk-stack-installation.html
bejyjqdl4#
我推荐使用一个名为kubetail的bash脚本。
您可以下载bash script并将其添加到您的项目中,然后运行例如:
查看标签为
app=user
的所有Pod。请注意每个pod的颜色显示:
(*)运行
./tools/kubetail.sh -h
以查看一些不错的执行选项。ia2d9nvy5#
我几乎没有见过有人从整个集群中提取所有日志,因为你通常需要日志来手动搜索某些问题或遵循(
-f
)例程,或收集审计信息,或将所有日志流到日志接收器以备监视(例如prometheus)。但是,如果需要获取所有日志,则使用
--tail
选项并不是您想要的(tail
仅显示特定日志源的最后行数,并避免将单个日志源的整个日志历史溢出到您的终端)。对于kubernetes,您可以使用自己选择的语言(bash、Python等)编写一个简单的脚本到
kubectl get all --show-all --all-namespaces
,并迭代pod以运行kubectl -n <namespace> logs <pod>
;但是要注意,在一个Pod中可能有多个容器,每个容器都有单独的日志,并且还记录集群节点本身、部署中的状态更改、更改的额外 meta信息、卷供应和堆等。这可能就是为什么从整个集群中提取所有日志非常罕见的原因,因此没有简单(快捷)的方法来做到这一点。
z0qdvdin6#
r1zk6ea17#
对于应用程序数据,您可能只想跟踪集群中的所有pod。
但是如果你想要一个集群的 * 控制平面 * 的日志-你可以用途:https://aws.amazon.com/about-aws/whats-new/2019/04/amazon-eks-now-delivers-kubernetes-control-plane-logs-to-amazon-/