什么是适用于 AKS 的 “Inspektor Gadget” 扩展? (预览版)

Inspektor Gadget 是一款可观测性工具,可帮助你借助 eBPF 检查、跟踪和排查在 Azure Kubernetes 服务 (AKS) 群集上运行的工作负载。 它收集低级别系统数据,例如 DNS 查询、文件访问、进程执行和网络连接,并将其与 Pod、命名空间和节点等 Kubernetes 元数据相关联。 此关联可帮助你更快地分析根本原因,并更好地了解系统。 通过这种关联,可以更轻松地诊断 Kubernetes 环境中难以观察到的问题。

Inspektor 小工具群集扩展通过Azure资源管理平面在 AKS 群集上安装和管理 Inspektor 小工具。 您可以使用 az k8s-extension CLI 命令安装、配置、更新和删除它。 此方法可提供由 Azure 资源管理器 驱动的一致生命周期管理,而不是使用 Helm 手动管理部署。 该扩展的所有容器映像均从 Microsoft Artifact Registry (MCR) 拉取。

Important

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

工作原理

该扩展在 gadget 命名空间中将 Inspektor Gadget 部署为名为 gadget 的 DaemonSet,并在每个可调度节点上运行一个 Pod。 每个 Pod 都会将针对你的使用场景的特定 eBPF 程序加载到内核中,以便直接从节点收集数据,同时将开销降至最低。

Inspektor Gadget 使用 Kubernetes 元数据扩充原始内核事件。 例如,当它跟踪 DNS 查询时,它会将网络数据包与生成它的 Pod、命名空间和节点相关联,因此会看到工作负荷上下文,而不仅仅是 IP 地址和进程 ID。

此图显示了节点上的 DNS 数据包,该数据包在呈现给用户之前已附加了 Pod、命名空间和节点信息。

你可以通过运行 gadgets 与 Inspektor Gadget 交互,这些是用于捕获特定类型系统活动的专用工具。 可以通过两种方式使用 gadget:通过 kubectl gadget 插件以交互方式使用,并将每个 gadget 的作用范围限定在某个命名空间、某个 Pod 或整个集群内,以进行临时故障排查;或者在安装时启动 gadget,使其持续在后台运行,并将其数据导出到 Prometheus、Azure Monitor 或与 OpenTelemetry 兼容的后端,而无需手动干预。

你可以用 Inspektor Gadget 做什么?

Inspektor Gadget 为 eBPF 遥测数据添加工作负载上下文。 它从内核收集低级别信号并将其绑定到所涉及的 Kubernetes 对象,以便可以观察和排查一系列子系统的问题:

  • DNS:使用原始 Pod 进行查询和响应活动,以诊断名称解析失败。
  • 网络:TCP 连接、丢弃的数据包和重新传输,以便进行连接分析。
  • 进程:进程执行、信号以及因内存不足而被终止的情况,用于跟踪 Pod 中运行的进程。
  • 文件系统:文件打开、装载和慢速文件系统操作,以调查意外的 I/O。
  • 安全性:功能检查、seccomp 事件和 Linux 安全模块决策以强化工作负荷。

有关小工具的完整列表,请参阅 Inspektor 小工具目录

使用遥测

您可以通过多种方式使用 Inspektor Gadget 收集到的遥测数据:

  • CLI:使用 kubectl gadget 插件以交互方式运行小工具并查看结果。
  • Prometheus:以 Prometheus 格式公开小工具指标以供抓取。
  • Azure Monitor:使用Azure Monitor托管的 Prometheus 来擦除小工具指标。
  • OpenTelemetry:将指标导出到与 OpenTelemetry 兼容的后端。

后续步骤