集群内的状况层出不穷,变化莫测,如节点状态异常,Pod 重启等,如果无法第一时间感知状况,会错过最佳的问题处理时间,待问题扩大,影响到业务时才发现往往已经为时已晚。而事件日志(Event)记录了全面的集群状态变更信息,不仅可以帮助用户第一时间发现问题,也是排查问题的最佳帮手。
前提条件
什么是事件日志
Event 是 Kubernetes 中众多资源对象中的一员,通常用来记录集群内发生的状态变更,大到集群节点异常,小到 Pod 启动、调度成功等等。我们常用的
kubectl describe
命令就可以查看相关资源的事件信息。事件日志字段说明
级别(Type): 目前仅有 “Normal” 和 “Warning”,但是如果需要,可以使用自定义类型。
资源类型/对象(Involved Object):事件所涉及的对象,例如 Pod,Deployment,Node 等。
事件源(Source):报告此事件的组件;例如 Scheduler、Kubelet等。
内容(Reason):当前发生事件的简短描述,一般为枚举值,主要在程序内部使用。
详细描述(Message):当前发生事件的详细描述信息。
出现次数(Count):事件发生的次数。
预置仪表盘
CLS已将常用的事件日志分析方式预置为仪表盘,您可通过这些仪表盘快速了解当前集群状态。
事件总览,可根据时间、命名空间、级别、原因、资源类型、资源对象等维度过滤事件,查看核心事件的汇总统计信息,并展示一个周期内的数据对比。例如,事件总数及分布情况、节点异常、Pod OOM、重要事件趋势等仪表盘以及异常 TOP 事件列表。
异常事件聚合检索,查看某个时间段内各类异常事件的 reason 和 object 分布趋势。
在仪表盘右上角单击编辑仪表盘可基于预置仪表盘进行编辑,构建更适用您的专属仪表盘。
排查问题场景示例
场景1:一台 Node 节点出现异常,定位原因
1. 打开事件总览仪表盘,在资源对象中输入异常节点名称。
2. 查询结果显示,有一条节点磁盘空间不足:
场景2:节点触发扩容了,用户需要对扩容过程进行回溯,以确定具体原因
开启 节点池「弹性伸缩」的集群,CA(cluster-autoscaler)组件会根据负载状况自动对集群中节点数量进行增减。如果集群中的节点发生了自动扩(缩)容,用户可通过事件检索对整个扩(缩)容过程进行回溯。
1. 登录 TKE 控制台。
2. 在左侧导航栏中,单击日志管理 > 事件日志。
3. 在事件检索页面,单击全局检索页签,并输入以下检索命令:
event.source.component : "cluster-autoscaler"
4. 结果如下图所示:
通过上图的事件流水,可以看到节点扩容操作在
2020-11-25 20:35:45
左右,分别由三个 nginx Pod(nginx-5dbf784b68-tq8rd、nginx-5dbf784b68-fpvbx、nginx-5dbf784b68-v9jv5) 触发,最终扩增了3个节点,后续的扩容由于达到节点池的最大节点数没有再次触发。