你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Kubernetes 服务 (AKS) 中使用 Kubernetes 事件进行故障排除

本文介绍如何使用 Kubernetes 事件监视和排查 Azure Kubernetes 服务 (AKS) 群集中的问题。

什么是 Kubernetes 事件?

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

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

Kubernetes 事件对象

下表列出了一些关键的 Kubernetes 事件对象:

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

有关详细信息,请参阅官方 Kubernetes 文档

查看 Kubernetes 事件

  • 使用 kubectl get events 命令列出群集中的所有事件。

    kubectl get events
    
  • 首先查找 Pod 的名称,然后使用 kubectl describe pod 命令查看特定 Pod 的事件。

    kubectl get pods
    
    kubectl describe pod <pod-name>
    

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

筛选事件以获取相关性

在 AKS 群集中,可能具有正在运行的各种命名空间和服务。 根据对象类型、命名空间或原因筛选事件有助于将结果范围缩小到最相关的信息。

例如,可以使用以下命令筛选特定命名空间中的事件:

kubectl get events --namespace <namespace-name>

自动化处理事件通知

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

定期查看事件

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

后续步骤

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