介绍
组件拓扑(Topology View) 提供工作负载的可视化图形界面,展示 Pod、Deployment、Service、Ingress 等资源之间的依赖关系。通过拓扑图,你可以直观地理解应用架构,快速定位服务依赖和潜在瓶颈。
为什么需要拓扑?
- ✅ 可视化依赖:一眼看出哪些服务调用哪些后端
- ✅ 快速导航:点击拓扑节点直接跳转到资源详情
- ✅ 健康状态洞察:拓扑上的颜色/图标显示资源运行状态
- ✅ 问题诊断:识别单点故障、循环依赖、孤立服务
快速开始
打开拓扑视图
- 进入 开发者界面 → 工作负载
- 点击顶部 组件拓扑 Tab
- 页面加载当前项目环境的拓扑图
理解拓扑图元素
| 图标 | 资源类型 | 颜色 | 含义 |
|---|---|---|---|
| 🟢 绿色圆 | Pod / Deployment | 绿色 | 健康/Running |
| 🔴 红色圆 | Pod / Deployment | 红色 | 异常/Failed |
| 🟡 黄色圆 | Pod / Deployment | 黄色 | 警告/Pending |
| 🔵 菱形 | Service | 蓝色 | 服务入口 |
| 🔶 橙色方块 | Ingress | 橙色 | 外部路由 |
| ↔️ 连线 | 依赖关系 | 灰色 | Service → Pod,Ingress → Service |
基本操作
- 拖拽画布:鼠标左键拖动拓扑区域
- 缩放:鼠标滚轮或右下角 +/- 按钮
- 选中节点:点击节点,右侧显示详情面板
- 查看详情:双击节点 → 跳转到资源详情页
- 搜索:顶部搜索框输入资源名称过滤
功能详解
1. 自动布局
拓扑图支持多种布局算法:
- Hierarchical(分层):按服务层次自上而下排列(默认)
- Force Directed(力导向):根据依赖强度自动分布,减少交叉
- Grid(网格):规则排列,适合大规模资源
切换布局:拓扑右上角布局选择器。
2. 资源分组
默认按 Namespace 分组,不同命名空间使用不同背景色区分。
也可以按 应用标签(app label) 分组,将属于同一应用的 Pod、Service、Ingress 聚合在一起。
3. 健康状态指示
拓扑实时反映资源状态:
| 状态 | 触发条件 | 建议操作 |
|---|---|---|
| 🟢 健康 | Pod Ready,Deployment 可用副本数 = 期望副本数 | 无需操作 |
| 🟡 警告 | Pod Pending、CrashLoopBackOff、副本不足 | 查看事件和日志 |
| 🔴 异常 | Pod Failed、Deployment 升级失败 | 立即处理 |
4. 依赖高亮
点击某个节点,拓扑会自动高亮:
- 入站依赖(哪些服务调用我)→ 蓝色连线
- 出站依赖(我调用哪些服务)→ 绿色连线
- 无关节点 → 变灰
帮助快速识别关键路径。
典型使用场景
场景 1:新项目架构了解
刚接手一个项目,快速了解服务拓扑:
- 打开拓扑 → 查看主要 Service 和 Pod
- 双击关键 Service → 查看 Deployment 配置
- 发现某个 Service 没有后端 Pod → 排查原因
- 查看跨命名空间调用(如有)
场景 2:故障排查
收到告警”服务 A 不可用”:
- 在拓扑中定位服务 A 的 Pod(状态红色?)
- 查看上游依赖(数据库、缓存)是否正常
- 查看网络策略是否阻断(拓扑不显示,需查 NetworkPolicy)
- 点击 Pod → 查看日志和事件
场景 3:容量规划
评估应用资源使用:
- 拓扑中查看各 Deployment 的副本数
- 点击 Pod → 查看 CPU/内存使用率
- 发现某个 Pod 持续高负载 → 考虑扩容或优化代码
- 查看 Pod 分布(是否集中在某节点)→ 调整调度策略
高级功能
自定义标签过滤
使用顶部的过滤器只显示特定标签的资源:
app=myapp
env=prod
tier=backend
支持多个条件,用逗号分隔。
导出拓扑图
点击 导出 按钮,可以将当前视图导出为:
- PNG 图片:用于文档或汇报
- JSON 数据:用于自动化分析
实时刷新
默认拓扑每 30 秒 自动刷新,反映最新状态。可以关闭自动刷新手动点击刷新按钮。
常见问题
Q: 拓扑不显示某些资源?
- 检查命名空间:拓扑默认显示当前环境的命名空间
- 检查资源标签:拓扑依赖
app标签来分组服务 - 确认资源类型:拓扑显示常见工作负载(Pod/Deploy/STS/Svc/Ing),非标准资源不显示
Q: 连线混乱看不清?
- 切换布局算法(力导向通常更清晰)
- 使用过滤器聚焦特定应用
- 暂时隐藏不相关节点(右键节点 → 隐藏)
Q: 可以自定义拓扑样式吗?
当前版本不支持自定义样式。如果有特殊需求,可以通过导出 JSON 数据后使用第三方工具(如 Graphviz、Cytoscape)重新渲染。
Q: 拓扑性能问题?
如果资源数量巨大(>500),拓扑渲染可能卡顿。建议:
- 使用过滤器缩小范围
- 按命名空间切换,避免一次显示所有
- 联系管理员扩增浏览器内存或减少同时显示的节点数
与开发者观测平台的区别
拓扑侧重于资源依赖关系,是静态/半静态的结构展示;观测平台(指标/日志)侧重于运行时状态。建议结合使用:
- 拓扑发现架构 → 确定哪些服务需要监控
- 观测平台查看实时指标 → 判断服务质量
- 拓扑定位异常节点 → 观测平台深入分析日志