Ale*_*lls 2 kubernetes kubectl amazon-eks aws-eks eks
我尝试了以下命令:
kubectl logs --tail
Run Code Online (Sandbox Code Playgroud)
我收到此错误/帮助输出:
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
Run Code Online (Sandbox Code Playgroud)
嗯,我只想查看所有日志,这不是常见的事情吗?如何跟踪集群的所有日志?
kail
从最上面的答案来看,仅限 Linux 和 macOS,但Stern也适用于 Windows。
它可以基于名称的正则表达式匹配进行 pod 匹配,然后可以跟踪日志。
要跟踪所有 pod,而不打印default
命名空间中的任何先前日志,您可以运行例如:
stern ".*" --tail 0
Run Code Online (Sandbox Code Playgroud)
对于绝对的一切,包括。命名空间中发生的内部事情kube-system
:
stern ".*" --all-namespaces --tail 0
Run Code Online (Sandbox Code Playgroud)
或者,您可以例如跟踪所有login-.*
容器并获取一些上下文
stern "login-.*" --tail 25
Run Code Online (Sandbox Code Playgroud)
我几乎没有见过有人从整个集群中提取所有日志,因为您通常要么需要日志来手动搜索某些问题,要么遵循 ( -f
) 例程,要么收集审核信息,要么将所有日志流式传输到日志接收器以供其准备监控(例如普罗米修斯)。
但是,如果需要获取所有日志,那么使用该--tail
选项并不是您想要的(tail
仅显示某个日志源的最后几行,并避免将单个日志源的整个日志历史记录溢出到您的终端) )。
对于 kubernetes,您可以使用您选择的语言(bash、Python 等)编写一个简单的脚本来kubectl get all --show-all --all-namespaces
迭代 pod 来运行kubectl -n <namespace> logs <pod>
;但请注意,一个 Pod 中可能有多个容器,每个容器都有单独的日志,并且还记录集群节点本身、部署中的状态更改、更改的额外元信息、卷配置等。
这可能就是从整个集群中提取所有日志的情况很少见的原因,因此没有简单(快捷)的方法来做到这一点。
归档时间: |
|
查看次数: |
1968 次 |
最近记录: |