首页 > 解决方案 > K8s - 在旧 Pod 终止之前安排新 Pod

问题描述

我已经阅读了 Kubernetes 文档,但我无法就我的问题得到明确的答案。我正在使用官方的集群自动缩放器。

  1. 我有一个指定应该运行一个副本的部署。当一个 pod 终止时(例如,在一个正在缩减的节点上运行),新的 pod 是在终止开始之前还是在终止完成之后安排的?文档说计划在终止时发生,但没有提到在哪个阶段。
  2. 为了在不中断任何服务的情况下实现无缝节点缩减,我希望 k8 将 pod 扩展到 N+1 个副本(此时 pod 仅被调度到未缩减的节点),然后耗尽节点。根据我的测试,它首先排空,然后根据配置安排任何丢失的 pod。是否可以配置此行为,或者目前无法做到这一点?

据我了解,使用 RollingUpdate 策略可以轻松实现无缝更新。我还没有发现相同的“滚动”策略可以用于按比例缩小。

编辑

TL;DR 我正在寻找关于 a) 两个以上副本部署和 b) 一个副本部署的 HA

a) 可以通过使用 PDB 来实现。查看弗里茨的答案。如果您需要在不同节点上安排 pod,请利用反关联(Marc 的回答)

b) 如果您可以接受短暂的中断,那么 PDB 是官方的选择。如果您需要解决方法,我的回答可能会有所启发。

标签: kuberneteskubernetes-pod

解决方案


可以使用所谓的中断预算来配置缩减行为

在您的部署清单中,您可以在自愿中断(如耗尽节点)期间定义maxUnavailable和数量的 Pod。minAvailable

有关如何执行此操作,请查看K8s 文档


推荐阅读