Kubelet 同步循环

Kubelet 同步循环

kubelet 是每个节点上的主要 "节点代理",负责创建和监视 Pod。kubelet 运行一个同步循环,周期性地将期望状态(Pod 规约) 与运行中容器的实际状态进行协调。

  1. 同步循环(Sync Loop):同步循环将分配给其节点(nodeName 与节点匹配)的 Pod 的工作(从多个来源聚合)排入队列。在每次循环过程中,被称为 Pod 工作器(Pod Worker) 的子进程会尝试将这些 Pod 的期望状态与运行中容器的当前状态进行协调。
  2. 同步 Pod(Sync Pod):kubelet 的大部分逻辑存储在 podSyncer 接口中的一组函数里, 包括 SyncPod 函数及其变体(如 SyncTerminatingPod 和 SyncTerminatedPod)。 在每次同步循环中,每个 Pod 都会执行一个相关的 podSyncer 函数, 尝试将节点上的 Pod 状态驱动到期望状态。
  3. 容器运行时接口(CRI): 要实际运行容器,kubelet 使用 CRI 与容器运行时(如 containerd 或 CRI-O)通信。 kubelet 作为客户端,指示运行时创建 "Pod 沙箱",然后按照 Pod 规约中的 定义创建/启动各个容器。
  4. PLEG(Pod 生命周期事件生成器):kubelet 需要知道容器何时启动、停止或失败。 它依赖一个名为 PLEG 的组件,周期性地轮询运行时以获取所有容器的标准状态。 PLEG 生成的事件会唤醒同步循环以更新 Pod 状态。

由于这种轮询机制,通过 API 看到的状态(如 kubectl get pod) 相比节点上的即时实际情况可能会有轻微延迟。

最后修改 September 25, 2026 at 9:27 PM PST: feat: port the static site setup to dev-1.37-ar.1 (8f252e2)