作者:v神
导语:
云原生日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志数据解决平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
腾讯云容器服务(Tencent Kubernetes Engine,TKE)是基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。同时腾讯云也提供 弹性容器服务(Elastic Kubernetes Service,EKS)和 边缘容器服务(Tencent Kubernetes Engine for Edge,TKE Edge),方便您按需选择。
集群内的状况层出不穷,变化莫测,如节点状态异常,Pod重启等,如果无法第一时间感知状况,会错过最佳的问题处理时间,待问题扩大,影响到业务时才发现往往已经为时已晚。
而事件日志(Event)记录了全面的集群状态变更信息,不仅可以帮助用户帮助第一时间发现问题,也是排查问题的最佳帮手。
什么是事件日志
事件(Event)是Kubernetes中众多资源对象中的一员,通常用来记录集群内发生的状态变更,大到集群节点异常,小到Pod启动、调度成功等等。我们常用的kubectl describe
命令就可以查看相关资源的事件信息。
事件日志字段说明
- 级别(Type): 目前仅有“Normal”和“Warning”,但是如果需要,可以使用自定义类型。
- 资源类型/对象(Involved Object):事件所涉及的对象,例如Pod,Deployment,Node等。
- 事件源(Source):报告此事件的组件;如Scheduler、Kubelet等。
- 内容(Reason):当前发生事件的简短描述,一般为枚举值,主要在程序内部使用。
- 详细描述(Message):当前发生事件的详细描述信息。
- 出现次数(Count):事件发生的次数。
如何使用事件日志去排查问题
日志服务CLS提供针对kubernetes事件日志的一站式服务,包含采集,存储,检索分析能力。用户仅需一键开启集群事件日志功能,即可获取开箱即用的事件日志可视化分析仪表盘。通过可视化的图表,用户可以轻松通过控制台解决大多数常见的运维问题,下面就让我们一起看看如何使用事件日志去排查问题。
前提条件:用户购买TKE容器服务,开启集群事件日志,请参考操作指南
场景1:一台Node节点出现异常,定位原因
进入TKE容器服务控制台,点击左侧菜单中【集群运维】>【事件检索】。在【事件检索】页面,点击【事件总览】,在过滤项中输入异常节点名称。
查询结果显示,有一条节点磁盘空间不足
的事件记录查询结果如下图:
进一步查看异常事件趋势:
可以发现,2020-11-25
号开始,节点172.16.18.13
由于磁盘空间不足导致节点异常,此后kubelet开始尝试驱逐节点上的pod以回收节点磁盘空间。
场景2:节点触发扩容了,用户需要对扩容过程进行回溯,以确定具体原因
开启了节点池「弹性伸缩」的集群,CA(cluster-autoscler)组件会根据负载状况自动对集群中节点数量进行增减。如果集群中的节点发生了自动扩(缩)容,用户可通过事件检索对整个扩(缩)容过程进行回溯。
在【事件检索】页面,点击【全局检索】,输入以下检索命令:
代码语言:javascript复制event.source.component : "cluster-autoscaler"
在左侧隐藏字段中选择event.reason
、event.message
、event.involvedObject.name
、event.involvedObject.name
进行显示,将查询结果按照日志时间
倒序排列,结果如下图所示:
通过上图的事件流水,可以看到节点扩容操作在2020-11-25 20:35:45
左右,分别由三个nginx Pod(nginx-5dbf784b68-tq8rd、nginx-5dbf784b68-fpvbx、nginx-5dbf784b68-v9jv5)触发,最终扩增了3个节点,后续的扩容由于达到节点池的最大节点数没有再次触发。
以上就是本期TKE事件日志的玩法分析, 如果您有更多有意思的日志实践,欢迎投稿!
往期文章:
【日志服务CLS】CentOs接入笔记
【日志服务CLS】应用工作流ASW接入CLS实践分享
【日志服务CLS】腾讯云Log4j/Logback日志采集最佳实践
【日志服务CLS】Nginx 访问日志接入腾讯云日志服务
【日志服务CLS】初识腾讯 CLS 高速检索与 Nginx 预报警服务~