节点就绪控制器简介

Logo for node readiness controller

在标准的 Kubernetes 模型中,节点是否适合运行工作负载取决于一个简单的“就绪”状态。 然而,在现代 Kubernetes 环境中,节点需要复杂的底层架构依赖项 (例如网络代理、存储驱动程序、GPU 固件或自定义健康检查)才能完全运行,从而可靠地托管 Pod。

今天,我代表 Kubernetes 项目宣布推出节点就绪控制器

该项目引入了一个声明式系统来管理节点污点,从而在节点启动过程中扩展了就绪保护机制,使其超越了标准条件。

通过基于自定义健康信号动态管理污点,该控制器确保工作负载仅部署在满足所有底层架构特定要求的节点上。

为什么需要节点就绪控制器?

对于具有复杂引导要求的集群,Kubernetes 核心节点的“就绪”状态通常不足以满足需求。 运维人员经常需要确保特定的 DaemonSet 或本地服务在节点进入调度池之前处于健康状态。

节点就绪控制器通过允许运维人员定义针对特定节点组的自定义调度门控来弥补这一不足。 这使你能够在异构集群中强制执行不同的就绪要求,例如,确保配备 GPU 的节点只有在验证了专用驱动程序后才能接受 Pod, 而通用节点则遵循标准路径。

它提供三大主要优势:

  • 自定义就绪状态定义:定义特定平台上的“就绪”状态。
  • 自动化污点管理:控制器会根据状态自动应用或移除节点污点,防止 Pod 部署到未就绪的基础设施上。
  • 声明式节点引导:可靠地管理多步骤节点初始化,并清晰地观察引导过程。

核心概念和特性

控制器以节点就绪规则(NodeReadinessRule,NRR)API 为核心,该 API 允许你为节点定义声明式的“门控”。

灵活的强制执行模式

控制器支持两种不同的运行模式:

持续强制执行
在节点的整个生命周期内主动维护就绪保证。 如果关键依赖项(例如设备驱动程序)之后发生故障,则该节点会立即被标记为“已污染”,以防止新的调度。
仅引导强制执行
专门用于一次性初始化步骤,例如预拉取大型镜像或硬件配置。 一旦满足条件,控制器会将引导过程标记为已完成,并停止监控该节点的该特定规则。

状态报告

控制器响应节点状态,而非自行执行健康检查。 这种解耦设计使其能够与生态系统中现有的其他工具以及自定义解决方案无缝集成:

  • 节点问题检测器(NPD): 使用现有的 NPD 配置和自定义脚本来报告节点健康状况。
  • 就绪状态报告器:项目提供的一个轻量级代理,可以部署用于定期检查本地 HTTP 端点并相应地更新节点状态。

通过试运行确保运行安全

在整个集群中部署新的就绪规则存在固有风险。 为了降低这种风险,试运行模式允许运维人员首先模拟对集群的影响。 在此模式下,控制器会记录预期操作并更新规则状态以显示受影响的节点, 而无需实际应用污点,从而在强制执行前实现安全验证。

示例:CNI 引导

以下 NodeReadinessRule 确保节点在 CNI 代理正常工作之前保持不可调度状态。 控制器监控自定义的 cniplugin.example.net/NetworkReady 条件, 并且仅当该状态为 True 时才移除 readiness.k8s.io/acme.com/network-unavailable 污点。

apiVersion: readiness.node.x-k8s.io/v1alpha1
kind: NodeReadinessRule
metadata:
  name: network-readiness-rule
spec:
  conditions:
    - type: "cniplugin.example.net/NetworkReady"
      requiredStatus: "True"
  taint:
    key: "readiness.k8s.io/acme.com/network-unavailable"
    effect: "NoSchedule"
    value: "pending"
  enforcementMode: "bootstrap-only"
  nodeSelector:
    matchLabels:
      node-role.kubernetes.io/worker: ""

演示

参与方式

节点就绪控制器(Node Readiness Controller)刚刚起步, 我们的初始版本已经发布, 我们正在寻求社区反馈以完善路线图。 继我们在 KubeCon NA 2025 上富有成效的非正式会议讨论之后,我们很高兴能继续进行线下交流。

欢迎参加 KubeCon + CloudNativeCon Europe 2026 的维护者专场会议: 解决非确定性调度问题:节点就绪控制器简介

与此同时,你可以通过以下方式贡献力量或关注我们的进展: