节点声明式特性
特性状态:
Kubernetes v1.35 [alpha](默认禁用)Kubernetes 节点使用 声明式特性 来报告特定功能的可用性,包括新功能和特性门控功能。
控制平面组件利用这些信息以做出更好的决策。通过 NodeDeclaredFeatures,
kube-scheduler 确保 Pod 只被放置在明确满足 Pod 所需特性的节点上。 此外,
NodeDeclaredFeatureValidator 准入控制器会根据节点的声明式特性验证 Pod 更新。
这一机制帮助管理版本偏移并改善集群稳定性,尤其是集群在升级期间或集群处于混合版本环境时, 这些情况下各个节点可能没有都启用相同的特性。这是为 Kubernetes 特性开发人员准备的, 用于引入新的节点级特性并在后台运行;部署 Pod 的应用程序开发人员无需直接与此框架交互。
工作原理
- kubelet 特性报告: 在启动时,每个节点上的 kubelet 会监测哪些受管理的
Kubernetes 特性目前是启用的,并将其报告在节点的
.status.declaredFeatures字段中。只有积极开发的特性才会在此字段中列出。
- 调度过滤: 默认的 kube-scheduler 使用
NodeDeclaredFeatures插件。此插件:- 在
PreFilter阶段,通过检查PodSpec来推断 Pod 所需要的阶段特性集。 - 在
Filter阶段,检查在节点.status.declaredFeatures字段列出的特性是否满足推测的 Pod 需求。在缺少所需特性的节点上,Pod 将不会被调度。自定义调度器同样可以利用.status.declaredFeatures字段来确保执行类似的约束。
- 在
- 准入控制:
NodeDeclaredFeatureValidator准入控制器可以拒绝 Pod 绑定到那些 Pod 需要的特性未被声明的节点上,从而防止 Pod 更新期间出现问题。
启用节点声明式特性
想要使用节点声明式特性,必须在 kube-apiserver、kube-scheduler 和 kubelet 组件上启用
NodeDeclaredFeatures 特性门控。
接下来
- 阅读 KEP 以了解更多细节: KEP-5328: Node Declared Features
- 阅读关于
NodeDeclaredFeatureValidator准入控制器
最后修改 February 24, 2026 at 11:31 AM PST: [zh-cn] sync node-declared-features.md (d96458d8ac)