1. 课程导论:Kubernetes 调度器架构概览、网络拓扑对调度的影响、eBPF 在可观测性中的角色、容量突增场景定义

1.1 Kubernetes 调度器架构概览

Kubernetes 调度器(kube-scheduler)是控制平面中负责将 Pod 绑定到合适 Node 的核心组件。其工作流程可抽象为 “过滤 → 评分 → 绑定” 三个阶段:

  1. 过滤(Predicates / Filtering):遍历所有 Node,剔除不满足 Pod 资源请求、端口冲突、污点容忍等硬性条件的节点。
  2. 评分(Priorities / Scoring):对通过过滤的 Node 执行多维度打分(如资源利用率、亲和性、拓扑分布),选出最优节点。
  3. 绑定(Binding):将 Pod 与目标 Node 的绑定记录写入 etcd,触发 kubelet 创建容器。

调度器采用 “调度周期” 与 “绑定周期” 分离的插件化架构,每个阶段均可通过调度框架(Scheduling Framework)扩展。默认调度器内置了超过 20 个插件,覆盖资源均衡、节点优选、拓扑约束等场景。

关键指标:调度延迟(Scheduling Latency)通常要求 P99 < 100ms,过滤阶段耗时占比约 60%,评分阶段约 30%,绑定阶段约 10%。
Kubernetes 调度器架构流程图 Kubernetes 调度器架构流程 Pod 创建请求 过滤 (Filter) 评分 (Score) 绑定 (Bind) 调度框架插件示例 • NodeResourcesFit(过滤/评分) • PodTopologySpread(评分) • InterPodAffinity(过滤/评分) • NodeUnschedulable(过滤) • TaintToleration(过滤) • VolumeBinding(过滤/绑定)

1.2 网络拓扑对调度的影响

在云原生环境中,网络拓扑直接影响 Pod 间的通信延迟与带宽。调度器若忽略网络拓扑,可能导致跨可用区(AZ)或跨机架的大量流量,引发性能抖动与成本上升。

拓扑层级 典型延迟 调度影响 优化策略
同 Node(本地回环) < 0.1ms Pod 间通信最快,优先同节点调度 PodAffinity / 拓扑键 kubernetes.io/hostname
同机架 / 同 ToR 0.1 – 0.5ms 次优,适合有状态服务 自定义拓扑键 topology.kubernetes.io/rack
同可用区(AZ) 0.5 – 2ms 默认调度单元,平衡容灾与性能 PodTopologySpread / 反亲和
跨可用区 2 – 10ms 高延迟,应避免非必要跨区流量 NodeAffinity + 拓扑感知路由
常见陷阱:默认调度器不感知网络拓扑距离。当集群跨多个 AZ 时,若未配置 topologySpreadConstraints,调度器可能将大量 Pod 集中到同一 AZ,造成单点故障与网络瓶颈。

1.3 eBPF 在可观测性中的角色

eBPF(Extended Berkeley Packet Filter)是一种在内核中安全运行沙箱程序的技术,无需修改内核源码或加载内核模块。在 Kubernetes 可观测性领域,eBPF 扮演着 “内核探针” 的角色,能够以极低开销捕获网络、系统调用、文件 I/O 等事件。

  • 网络数据包追踪:通过 XDP 或 tc 钩子,实时采集 Pod 间 TCP/UDP 流量、重传率、RTT。
  • 系统调用监控:挂载 tracepoint/syscalls,追踪容器进程的文件读写、网络连接建立。
  • 资源水位预测:结合 kprobe 与 perf_event,采集 CPU 调度延迟、内存分配频率、网络队列深度,构建时序特征用于容量预测。
eBPF 优势:相比传统 sidecar 模式(如 Istio 的 Envoy),eBPF 无需注入代理容器,CPU 开销降低 60%–80%,且对应用完全透明。
eBPF 在 Kubernetes 可观测性中的角色 eBPF 在 Kubernetes 可观测性中的角色 Linux 内核 XDP / tc kprobe / tracepoint perf_event cgroup 钩子 用户态采集与聚合 • 网络流量矩阵(Pod ↔ Pod) • 系统调用延迟分布 • 资源水位时序数据

1.4 容量突增场景定义

容量突增(Capacity Spike)指集群在短时间内(秒级到分钟级)收到远超正常基线的 Pod 创建请求,导致调度器、kubelet 或网络组件过载。典型场景包括:

  • 电商大促:秒杀活动开始瞬间,数千个 Pod 同时扩容。
  • CI/CD 流水线:代码合并触发批量构建任务,短时间内创建大量 Job Pod。
  • 故障恢复:节点宕机后,控制器批量重建 Pod,引发调度风暴。
  • 定时任务:整点 CronJob 集中启动,造成资源争抢。
指标 正常基线 容量突增 影响
Pod 创建速率 5 – 20 Pods/s 200 – 1000+ Pods/s 调度队列积压,调度延迟飙升至秒级
API Server QPS 500 – 2000 5000 – 20000+ etcd 写入压力增大,请求超时
网络连接数 1000 – 5000 50000+ conntrack 表溢出,丢包
eBPF 事件采样率 1k – 10k events/s 100k – 1M events/s perf buffer 溢出,数据丢失
课程核心目标:通过调度策略优化、网络拓扑感知调度、以及 eBPF 驱动的实时水位预测,在容量突增场景下保障集群稳定性与调度效率。