用于故障排除的 Kubernetes 事件

事件是 Kubernetes 中监视和故障排除问题的最突出来源之一。 它们捕获并记录各种 Kubernetes 对象的生命周期信息,例如 Pod、节点、服务和部署。 通过监视事件,可以了解群集的活动、识别问题并有效地排查问题。

Kubernetes 事件不会在整个群集生命周期中持久存在,因为没有保留机制。 它们生存期短,仅在生成事件后一小时内可用。 若要将事件存储更长时间,请启用容器见解

Kubernetes 事件对象

下面是 Kubernetes 事件中的重要字段集。 有关所有字段的完整列表,请检查官方 Kubernetes 文档

字段名称 含义
type 重要性会根据事件的严重程度而变化:
警告:这些事件表明存在潜在问题的情况,例如 Pod 反复失败或节点资源耗尽。 它们需要注意,但可能不会导致立即失败。
正常:这些事件表示常规操作,例如正在计划的 Pod 或部署纵向扩展。 它们通常表示群集行为正常。
reason 生成事件的原因。 例如,FailedSchedulingCrashLoopBackoff
message 描述事件的用户可读消息。
命名空间 与事件关联的 Kubernetes 对象的命名空间。
firstSeen 首次观测到事件的时间戳。
lastSeen 最后一次观测到事件的时间戳。
reportingController 报告事件的控制器的名称。 例如: kubernetes.io/kubelet
对象 (object) 与事件关联的 Kubernetes 对象的名称。

访问事件

可以使用 kubectl 查找群集及其组件的事件。

kubectl get events

若要查看特定 Pod 的事件,请先查找 Pod 的名称,然后使用 kubectl describe 列出事件。

kubectl get pods

kubectl describe pods <pod-name>

使用事件进行故障排除的最佳做法

筛选事件以获取相关性

在 AKS 群集中,可能正在运行各种命名空间和服务。 根据对象类型、命名空间或原因筛选事件有助于将焦点范围缩小到与应用程序最相关的内容。 例如,可以使用以下命令筛选特定命名空间中的事件:

kubectl get events -n <namespace>

自动化处理事件通知

为了确保及时响应 AKS 群集中的关键事件,请设置自动通知。 Azure 提供与 Azure Monitor 等监视和警报服务的集成。 可以将警报配置为基于特定事件模式触发。 这样,就可以立即了解需要关注的关键问题。

定期查看事件

养成定期查看 AKS 群集中的事件的习惯。 这种主动方法可以帮助你识别趋势、尽早发现潜在问题并防止升级。 通过随时了解事件,可以保持应用程序的稳定性和性能。

后续步骤

了解 Kubernetes 事件后,可以通过启用容器见解继续监视和可观测性之旅。