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。
你可以通过运行 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 兼容的后端。