我尝试了以下命令:
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
嗯,我只想查看所有日志,这不是一件常见的事情吗?如何跟踪集群的所有日志?
答案 0 :(得分:3)
如果您不介意使用第三方工具,kail
会完全按照您的描述进行操作。
从所有匹配的容器的所有容器中流式传输日志。 [...]不带参数的kail匹配集群中的所有pod。
答案 1 :(得分:2)
kail
仅适用于Linux和macOS,而Stern也适用于Windows。
它可以根据例如一个正则表达式匹配该名称,然后可以遵循日志。
要在不打印default
名称空间的任何先前日志的情况下跟踪所有pod,可以运行例如:
stern ".*" --tail 0
对于所有内容,包括kube-system
命名空间中发生的内部事件:
stern ".*" --all-namespaces --tail 0
或者,您可以例如跟随所有login-.*
容器并获得一些背景信息
stern "login-.*" --tail 25
答案 2 :(得分:1)
我几乎从未见过有人从整个集群中提取所有日志,因为您通常需要日志来手动搜索某些问题,或者遵循(-f
)例程,或者收集审计信息,或将所有日志流式传输到一个日志接收器,以使它们准备好进行监视(例如,普罗米修斯)。
但是,如果需要获取所有日志,则使用--tail
选项不是您想要的(tail
仅显示特定日志源的最后几行,并且避免将单个日志源的整个日志历史记录溢出到您的终端)。
对于kubernetes,您可以用自己选择的语言(bash,Python等)编写一个简单的脚本到kubectl get all --show-all --all-namespaces
并遍历pod来运行kubectl -n <namespace> logs <pod>
;但是请注意,一个Pod中可能有多个容器,每个容器中都有各自的日志,并且它们本身也登录集群节点,说明部署中的状态更改,更改的额外元信息,卷配置以及更多堆。
这可能是为什么从整个集群中拉出所有日志并不常见的原因,因此没有简单(快捷)的方法。
答案 3 :(得分:1)
您唯一可以做的就是使用这样的标签选择器获取多个Pod的日志:
kubectl logs -f -l app=nginx -l app=php
要获取整个集群的所有日志,您必须设置集中式日志收集,例如Elasticsearch,Fluentd和Kibana。最简单的方法是使用Helm图表进行安装,如下所述:https://linux-admin.tech/kubernetes/logging/2018/10/24/elk-stack-installation.html
答案 4 :(得分:0)
对于您的应用程序数据,您可能只想拖尾集群中的所有Pod。
但是,如果要为集群的控制平面记录日志-您可以使用: https://aws.amazon.com/about-aws/whats-new/2019/04/amazon-eks-now-delivers-kubernetes-control-plane-logs-to-amazon-/
答案 5 :(得分:0)
我建议使用一个名为kubetail的漂亮的bash脚本。
您可以下载bash script并将其添加到您的项目中并运行例如:
$ ./some-tools-directory/kubetail.sh --selector app=user --since 10m
要查看带有标签app=user
的所有广告连播。
请注意,每个窗格的颜色显示效果很好:
(*)运行./tools/kubetail.sh -h
来查看一些不错的执行选项。
kubetail.sh <search term> [-h] [-c] [-n] [-t] [-l] [-d] [-p] [-s] [-b] [-k] [-v] [-r] [-i] -- tail multiple Kubernetes pod logs at the same time
where:
-h, --help Show this help text
-c, --container The name of the container to tail in the pod (if multiple containers are defined in the pod).
Defaults to all containers in the pod. Can be used multiple times.
-t, --context The k8s context. ex. int1-context. Relies on ~/.kube/config for the contexts.
-l, --selector Label selector. If used the pod name is ignored.
-n, --namespace The Kubernetes namespace where the pods are located (defaults to "default")
-f, --follow Specify if the logs should be streamed. (true|false) Defaults to true.
-d, --dry-run Print the names of the matched pods and containers, then exit.
-p, --previous Return logs for the previous instances of the pods, if available. (true|false) Defaults to false.
-s, --since Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to 10s.
-b, --line-buffered This flags indicates to use line-buffered. Defaults to false.
-e, --regex The type of name matching to use (regex|substring)
-j, --jq If your output is json - use this jq-selector to parse it.
example: --jq ".logger + \" \" + .message"
-k, --colored-output Use colored output (pod|line|false).
pod = only color pod name, line = color entire line, false = don't use any colors.
Defaults to line.
-z, --skip-colors Comma-separated list of colors to not use in output
If you have green foreground on black, this will skip dark grey and some greens -z 2,8,10
Defaults to: 7,8
--timestamps Show timestamps for each log line
--tail Lines of recent log file to display. Defaults to -1, showing all log lines.
-v, --version Prints the kubetail version
-r, --cluster The name of the kubeconfig cluster to use.
-i, --show-color-index Show the color index before the pod name prefix that is shown before each log line.
Normally only the pod name is added as a prefix before each line, for example "[app-5b7ff6cbcd-bjv8n]",
but if "show-color-index" is true then color index is added as well: "[1:app-5b7ff6cbcd-bjv8n]".
This is useful if you have color blindness or if you want to know which colors to exclude (see "--skip-colors").
Defaults to false.
examples:
kubetail.sh my-pod-v1
kubetail.sh my-pod-v1 -c my-container
kubetail.sh my-pod-v1 -t int1-context -c my-container
kubetail.sh '(service|consumer|thing)' -e regex
kubetail.sh -l service=my-service
kubetail.sh --selector service=my-service --since 10m
kubetail.sh --tail 1