Kubernetes DNS pod 在 thundering herd scenario 中竞争用户级别 pods

Kubernetes DNS pod races user level pods in thundering herd scenario

想象一下这种假设情况(在实践中让我很痛苦):

  1. Kubernetes 集群中的所有 worker 实例都死了(比如由于现货价格波动),一个新的实例会自动恢复。
  2. 调度程序然后尝试以某种任意顺序将 pods 调度到节点上,但由于节点数量比以前少,它们不能全部适合。
  3. 所有 default 命名空间 pods 启用,但 kube-system 命名空间 DNS pod 未启用
  4. 现在大多数试图 运行 集群上的东西都被挂起,因为集群上没有 DNS。

有没有什么方法可以使用 Kubernetes 中的 QoS 层来让调度程序优先安排 kube-system pods 在其他命名空间之前?或者有其他方法可以解决这个问题吗?

这是一个真正的问题,Kubernetes 还没有 Pod QoS 保证。

为了完全安全,您的集群应该足够大以应对任何预期的集群收缩,但这并不总是可行的。

目前,手动收缩竞争的、低优先级的部署可能是让集群恢复工作的最简单方法。

正在努力将 Pod QoS 策略纳入 Kubernetes。您可以在 https://github.com/kubernetes/kubernetes/pull/14943

上关注 along/chime