Kubernetes 1.29:将污点管理器与节点生命周期控制器解耦
内容提要
Kubernetes 1.29引入了改进的污点驱逐功能,将其从节点生命周期控制器分离到独立的污点驱逐控制器中。这一变化提高了代码的可维护性,并允许集群管理员根据需求扩展或替换该控制器。新特性默认启用,用户可选择禁用,污点驱逐行为保持不变,资源使用增加微乎其微。
延伸解读
解耦带来的可扩展性提升
将污点驱逐功能从节点生命周期控制器分离为独立的污点驱逐控制器,使集群管理员能够扩展或替换默认实现。例如,可以自定义控制器以更好地支持使用本地磁盘 PersistentVolume 的有状态工作负载。这种解耦为未来针对特定场景的优化提供了可能。
默认启用与回退选项
新特性 SeparateTaintEvictionController 在 Kubernetes 1.29 中默认启用(Beta 阶段)。用户可以通过设置特性门控为 false 来禁用新特性,回退到旧的节点生命周期控制器中的污点管理器。此外,还可以通过 kube-controller-manager 的 --controllers=-taint-eviction-controller 参数选择性地禁用污点驱逐。
行为与资源影响
污点驱逐的现有行为保持不变,启用新特性不会影响现有操作的时间或资源使用。运行独立的污点驱逐控制器带来的资源使用增加微乎其微。因此,升级到 1.29 后,用户无需担心性能或行为变化。
新增监控指标
作为此次变更的一部分,引入了两个新的指标:pod_deletion_duration_seconds 和 pod_deletions_total,用于帮助监控基于污点的 Pod 驱逐。这些指标为管理员提供了更细粒度的可观测性,便于跟踪驱逐操作的性能和频率。
Q&A
Kubernetes 1.29中污点驱逐功能有什么改进?
Kubernetes 1.29将污点驱逐功能从节点生命周期控制器分离到独立的污点驱逐控制器中,提升了代码的可维护性。
如何禁用Kubernetes 1.29中的污点驱逐功能?
用户可以通过设置--controllers=-taint-eviction-controller在kube-controller-manager中禁用污点驱逐功能。
启用污点驱逐控制器会增加资源使用吗?
启用污点驱逐控制器的资源使用增加微乎其微,不会显著影响现有操作的时间或资源使用。
污点驱逐控制器的分离对集群管理员有什么好处?
分离后,集群管理员可以根据需求扩展或替换污点驱逐控制器,以满足不同的工作负载需求。
Kubernetes 1.29的污点驱逐行为是否改变?
污点驱逐行为保持不变,如果关闭SeparateTaintEvictionController特性,仍会使用旧的节点生命周期控制器。
Kubernetes 1.29中引入了哪些监控指标?
新引入的监控指标包括pod_deletion_duration_seconds和pod_deletions_total。