课程导论:Cilium Hubble 简介、镜像拉取网络流量故障排查的重要性、课程目标与受众

1.1 为什么需要观测镜像拉取流量?

在 Kubernetes 集群中,镜像拉取是最基础、最高频的操作之一。当 Pod 调度到节点后,kubelet 会向容器运行时(如 containerd)发起拉取请求,容器运行时再通过 HTTP/HTTPS 协议从镜像仓库(Registry)下载镜像层。这个链路涉及 DNS 解析、TCP 连接、TLS 握手、HTTP 请求/响应等多个网络环节,任何一个环节出问题都会导致 Pod 启动失败。

传统排查手段(如 tcpdump、iptables 日志)在云原生环境中面临三大痛点:

  • 数据碎片化:镜像拉取流量分散在多个节点,难以关联端到端路径。
  • 缺乏上下文:无法将网络包与 Kubernetes 资源(Pod、Service、Endpoint)自动关联。
  • 观测盲区:eBPF 内核级数据无法被传统工具高效采集。

Cilium Hubble 基于 eBPF 技术,能够无侵入地捕获节点上所有网络流量,并自动关联 Kubernetes 元数据,为镜像拉取故障排查提供端到端的可观测性。

核心洞察: 超过 60% 的 Pod 启动失败案例与镜像拉取阶段的网络问题有关,而 Hubble 可以将平均故障定位时间(MTTR)从小时级缩短到分钟级。

1.2 Cilium Hubble 核心能力速览

Hubble 是 Cilium 的可观测性子系统,它利用 eBPF 程序在内核态采集网络事件,并通过用户态组件提供实时流、指标和日志。下表对比了 Hubble 与传统网络观测工具的关键差异:

能力维度 传统工具(tcpdump/iptables) Cilium Hubble
数据采集层 用户态或内核模块 eBPF 内核态(低开销)
K8s 元数据关联 需手动关联(Pod IP → 名称) 自动关联(Pod/Service/Endpoint)
L7 协议解析 需额外工具(如 ngrep) 原生支持 HTTP/gRPC/DNS/Kafka
流量过滤能力 基于 IP/端口 基于 K8s 标签、命名空间、服务
历史回溯 需提前抓包 支持 Hubble Flow 持久化

1.3 镜像拉取网络链路全景图

为了直观理解 Hubble 的观测范围,下图展示了从 Pod 调度到镜像层下载完成的完整网络路径,以及 Hubble 在每个环节的观测能力:

镜像拉取网络链路与 Hubble 观测点 kubelet containerd DNS 解析 镜像仓库 Hubble eBPF 观测层(内核态流量捕获 + K8s 元数据注入) DNS 观测 解析耗时、失败原因 SRV 记录查询 TCP/TLS 观测 握手耗时、重传率 证书协商失败 HTTP 观测 请求方法、状态码 镜像层下载进度 Hubble Relay(集群级流量聚合) Hubble UI / CLI(可视化与过滤)

1.4 课程目标与受众

本课程旨在帮助学员掌握使用 Cilium Hubble 对镜像拉取网络流量进行端到端故障排查的实战技能。完成本课程后,学员将能够:

  • 理解镜像拉取网络路径:掌握从 kubelet 到镜像仓库的完整网络链路及关键故障点。
  • 部署 Hubble 观测栈:在 Cilium 环境中启用 Hubble,配置 Relay 和 UI。
  • 使用 Hubble CLI 过滤流量:基于 Pod 标签、命名空间、协议等条件精准捕获镜像拉取流量。
  • 分析 DNS/TCP/TLS/HTTP 故障:通过 Hubble Flow 数据定位解析失败、连接超时、证书错误、下载中断等根因。
  • 构建故障排查 SOP:形成可复用的镜像拉取网络问题排查流程。
目标受众: 平台工程师、SRE、Kubernetes 集群管理员、Cilium 运维人员。学员需具备基础的 Kubernetes 和 Linux 网络知识,无需 eBPF 或 Cilium 使用经验。

1.5 课程内容结构

本课程共分为 8 个模块,从基础概念到高级排查技巧,层层递进:

模块 核心内容 实战占比
1. 课程导论 Hubble 能力、镜像拉取链路、课程目标 10%
2. 环境准备 Cilium/Hubble 部署、Hubble CLI 安装 20%
3. 镜像拉取流量捕获 Hubble Flow 过滤、实时流与持久化 25%
4. DNS 故障排查 解析超时、NXDOMAIN、SRV 记录问题 15%
5. TCP/TLS 故障排查 连接超时、重传、证书验证失败 15%
6. HTTP 故障排查 状态码分析、镜像层下载中断 10%
7. 综合案例 端到端故障模拟与排查演练 5%
注意: 本课程所有实验均基于 Cilium 1.14+ 和 Hubble v0.12+ 版本。部分 Hubble CLI 命令在早期版本中可能有所不同,请确保环境版本匹配。