k8s查看多个pod日志问题研究
k8s同时跟踪多个pod的日志
痛点
在接触k8s一段时间以后.有个问题一直困扰着我. 线上日志是用graylog工具聚合的.但是存在延时15分钟的问题. 为了提高效率.想直接用kubectl命令行查看pod的日志. 然而线上分灰度与正式环境且一个服务会有多个pod实例运行.那么请求进来了 应该查看哪个pod的日志呢?
思考过程
1. 查看单个pod日志
查看一个pod日志的方法我知道:
kubectl logs [-f] [-n namspace] pod
还有一种方式是进入pod后查看应用内部的日志:
kubectl exec -it [-n namespace] pod bash
2. 查看多个pod的日志
那么,如果想查看多个pod中的日志呢? google一番,找到了这个方法:
1) 查看同一个deployment下的pod日志
kubectl logs -f deployment/<name-of-deployment>
该命令可以查看一个deployment下所有pod输出的日志.
2) 查看同一组标签下的pod日志
那么思维扩散一下. 我想同时查看两个在不同deployment的下日志?或者换个说法, 我对业务不熟悉.根本不知道pod在哪个deployment 哪个service下. 线上出了bug我要去定位.这时候怎么找pod日志?这时候我发现了一个可以通过pod的lable标签来输出日志的方法:
查看pod描述信息
kubectl describe pod XXX
kubectl describe pod api-55f5d8d49d-kzmcj
// output
Name: api-55f5d8d49d-kzmcj
Namespace: default
Priority: 0
Node: 172.16.6.7/172.16.6.7
Start Time: Wed, 07 Apr 2021 15:16:36 +0800
Labels: app=api
configAppliedTime=20210407070043
enable=true
pod-template-hash=55f5d8d49d
version=pro
... 省略
lable是每个pod的唯一标识符,所以以下命令:
kubectl logs -f -l app=api
可以查看所有带有app=api标签的pod日志
前提是我知道. 请求进入k8s集群后会先经过ingress-controller. 根据ingress中配置的规则找到service再由service负载到具体的pod.因为ingress-controller也是一个pod,由此联想到.是否可以找到一个所有ingress-controller都包含的lable标签. 通过kubeclt logs -f -l 实时跟踪所有ingress-controller的日志. 这时只需要找到我们的请求在ingress-controller中的日志信息. 就能知道请求去到了哪个命名空间哪个service.在跟踪这个service下的所有pod日志即可.
需要注意的是kubectl logs -f 结合标签选择器看pod日志. 对于实时跟踪的pod数量有限制:
kubectl logs -f -l "env=hz-k8s-ganjiang,app=im-agent-web"
error: you are attempting to follow 20 log streams, but maximum allowed concurrency is 5, use --max-log-requests to increase the limit
此时只需要带上 --max-log-requests 参数即可:
kubectl logs -f --max-log-requests=n -l "env=hz-k8s-ganjiang,app=im-agent-web"
总结
查看多个pod的日志的方式有两种
- 查看deploy日志
- 查看拥有一组相同lable的日志
kubectl logs -f deployment/<name-of-deployment>
kubectl logs -f -l "lable1=value1,lable2=value2"
其实查看一组pod的日志的问题本质是如何筛选出你想要的一组pod.进一步扩散思维.我们想知道的在kebenetes中如何选择一组对象资源.这就涉及到kubenetes的选择器. 包括标签选择器和对象选择器.后续将会介绍.
彩蛋: https://www.bilibili.com/video/BV1Hh411F7Wt/?spm_id_from=333.337.search-card.all.click
更多推荐
所有评论(0)