AKS 桌面包括一个名为 Insights 的集成故障排除套件,由 Inspektor 小工具提供支持,这是一种基于开源 eBPF(扩展的 Berkeley 数据包筛选器)调试工具。 无需修改代码或重启任何内容,即可了解 Pod 之间的网络流量、跟踪 DNS 故障以及浏览正在运行的进程,以发现意外或资源繁重的活动,只需单击几下鼠标即可通过直观的 UI。
本文逐步讲解如何启用 Insights 并使用它诊断 AKS 群集中的常见应用程序问题。
Important
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
先决条件
- 已安装 AKS 桌面 并登录到 AKS 群集。 请参阅 为 AKS 桌面设置 AKS 群集。
- 目标 AKS 群集的群集管理员或等效基于角色的访问控制(RBAC)权限。 安装 Inspektor 小工具需要创建
ClusterRole、ClusterRoleBinding和一个特权DaemonSet。 - 群集节点必须使用内核版本 ≥ 5.4 运行 Linux。 不支持Windows节点池。
- 如果群集使用具有受限 Pod 安全性的 Azure Policy 或 OPA Gatekeeper,请为
gadget命名空间添加豁免以允许特权 Pod。 - 目标群集必须是 AKS 标准群集。
在 AKS 桌面应用中启用数据洞察
启动 AKS 桌面应用程序,并确保已登录并连接到 AKS 群集。
在左侧导航中,选择 “设置”。
从“设置”菜单中,选择 “插件”。
在列表中找到 Insights 插件,然后选择 “启用 ”开关。
项目访问洞察
在左侧导航中,选择要将 Insights 用于 的项目 。 “ 见解 ”选项卡现在将显示在“项目”视图中。
将 Inspektor Gadget 部署到集群
在“见解”选项卡上,系统会提示将 Inspektor 小工具 部署到群集(如果尚未安装)。
- 选择“部署 Inspektor Gadget”。 AKS 桌面将 Inspektor Gadget DaemonSet 部署到
gadget群集上的命名空间。 - 等待部署完成。 状态指示器确认 Inspektor Gadget 何时准备就绪。
查看洞察数据
部署 Inspektor Gadget 后,“见解”选项卡将填充您的集群中的实时可观测性数据。 要查看完整功能集,请参阅Insights能执行的操作。
可以使用 Insights 执行哪些操作
使用进程进行性能故障排除
“进程”视图实时显示群集 Pod 中每个正在运行的进程,以及 CPU、内存和磁盘 I/O 使用情况。 使用它可执行以下操作:
- 确定哪些 Pod 消耗过多的 CPU 或内存。
- 发现块 I/O 异常活动,例如异常大量的磁盘读取或写入,这些读取或写入可能指示配置不当的应用程序、失控的日志写入器或存储瓶颈。
- 检测不应在容器中运行的意外进程。
使用跟踪传输控制协议的网络可见性 (TCP)
跟踪 TCP 使用 eBPF 在内核级别捕获实时 TCP 连接事件,而无需代理或 sidecar。 使用它可执行以下操作:
- 查看哪些 Pods 正在建立出站连接,以及连接到哪些目标 IP 和端口。
- 检测可能指示配置错误或安全问题的意外或未经授权的连接。
- 将网络异常与特定的 Pod 或工作负荷相关联。
注释
完成跟踪后,必须停止跟踪,选择跟踪右上角的红色停止按钮。
使用 Trace DNS 解决 DNS 问题
跟踪 DNS 捕获群集中 Pod 发出的每个 DNS 查询和响应。 使用它可执行以下操作:
- 确定无法解决的 DNS 查询,这是 Pod 到服务连接失败的常见原因。
- 测量 DNS 延迟,以确定 CoreDNS(群集内 DNS 服务器)还是上游 DNS 解析程序速度缓慢。
- 检查 CoreDNS 的运行状况以及外部 DNS 解析是否正常工作。
注释
完成跟踪后,必须停止跟踪,选择跟踪右上角的红色停止按钮。
卸载 Inspektor Gadget
通过删除 gadget 命名空间从群集中删除 Inspektor Gadget 工具。 这会删除所有 Insights 数据和功能,因此仅在不再需要任何 Insights 功能时执行此操作。
kubectl delete ns gadget
警告
此命令删除命名空间中的所有 gadget 资源,而不仅仅是 Inspektor 小工具创建的资源。
Insights 疑难排查问题
下表概述了在使用 Insights 时可能会遇到的常见问题及其解决方法:
| Issue | 解决方案 |
|---|---|
| “见解”选项卡不可见 | 确保已启用 Insights 插件。 转到“设置插件”>并打开“见解”。 |
| Inspektor Gadget 部署失败 | 验证是否有足够的 RBAC 权限在群集中创建 DaemonSets 和 ClusterRoles。 |
| 部署后不会显示任何数据 | 确认群集节点正在运行受支持的 Linux 内核(≥ 5.4)。 检查 Inspektor Gadget Pod 日志中是否存在错误。 |