概述
集群内的状况层出不穷,变化莫测,如节点状态异常,Pod 重启等,如果无法第一时间感知状况,会错过最佳的问题处理时间,待问题扩大,影响到业务时才发现往往已经为时已晚。
而事件日志(Event)记录了全面的集群状态变更信息,不仅可以帮助用户第一时间发现问题,也是排查问题的最佳帮手。
什么是事件日志
Event 是 Kubernetes 中众多资源对象中的一员,通常用来记录集群内发生的状态变更,大到集群节点异常,小到 Pod 启动、调度成功等等。我们常用的kubectl describe
命令就可以查看相关资源的事件信息。
事件日志字段说明
级别(Type): 目前仅有 “Normal” 和 “Warning”,但是如果需要,可以使用自定义类型。
资源类型/对象(Involved Object):事件所涉及的对象,例如 Pod,Deployment,Node 等。
事件源(Source):报告此事件的组件;例如 Scheduler、Kubelet等。
内容(Reason):当前发生事件的简短描述,一般为枚举值,主要在程序内部使用。
详细描述(Message):当前发生事件的详细描述信息。
出现次数(Count):事件发生的次数。
如何使用事件日志去排查问题
日志服务(Cloud Log Service,CLS)提供针对 kubernetes 事件日志的一站式服务,包含采集,存储,检索分析能力。用户仅需一键开启集群事件日志功能,即可获取开箱即用的事件日志可视化分析仪表盘。通过可视化的图表,用户可以轻松通过控制台解决大多数常见的运维问题。
前提条件
已购买容器服务(Tencent Kubernetes Engine,TKE),并开启集群事件日志,详情请参考 操作指南。 场景1:一台 Node 节点出现异常,定位原因
2. 在左侧导航栏中,单击日志管理 > 事件日志。
3. 在事件检索页面,选择事件总览页签,并在过滤项中输入异常节点名称。
查询结果显示,有一条节点磁盘空间不足
的事件记录查询结果如下图:
进一步查看异常事件趋势和异常 Top 事件:
可以发现,2020-11-25
号开始,节点172.16.18.13
由于磁盘空间不足导致节点异常,此后 kubelet 开始尝试驱逐节点上的 pod 以回收节点磁盘空间。
场景2:节点触发扩容了,用户需要对扩容过程进行回溯,以确定具体原因
开启 节点池「弹性伸缩」的集群,CA(cluster-autoscler)组件会根据负载状况自动对集群中节点数量进行增减。如果集群中的节点发生了自动扩(缩)容,用户可通过事件检索对整个扩(缩)容过程进行回溯。 2. 在左侧导航栏中,单击日志管理 > 事件日志。
3. 在事件检索页面,单击全局检索页签,并输入以下检索命令:
event.source.component : "cluster-autoscaler"
4. 在左侧隐藏字段中,选择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个节点,后续的扩容由于达到节点池的最大节点数没有再次触发。
本页内容是否解决了您的问题?