Kubernetes缩小特定Pod

Cha*_* L. 6 replication kubernetes

我有一组Pod运行命令,可能需要花费几秒钟的时间。有一个过程可以跟踪打开的请求以及请求在哪个Pod上运行。我希望在缩小Pod时使用该信息-通过指定要尝试退出的Pod或指定要关闭的Pod。更改副本数时是否可以指定这种类型的信息,例如,我想要X个副本,尝试不杀死在Pod A,B,C上长时间运行的任务?

wow*_*ing 6

您可以使用功能门注释特定的 Podcontroller.kubernetes.io/pod-deletion-cost: -999并启用PodDeletionCost功能门。此功能在 1.21 中实现 alpha,在 1.22 中实现 beta。

controller.kubernetes.io/pod-deletion-cost可以设置注释来提示与属于同一 ReplicaSet 的其他 pod 相比,删除 pod 的成本。删除成本较低的 Pod 将首先被删除。

https://github.com/kubernetes/kubernetes/pull/99163 https://github.com/kubernetes/kubernetes/pull/101080


Rob*_*ley 5

这目前是不可能的。当你缩减副本数量时,系统会选择一个删除;没有办法“提示”您希望删除哪个。

您可以做的一件事是更改正在运行的 pod 上的标签,这会影响它们在复制控制器中的成员资格。这可用于隔离您要调试的 pod(以便它们不会成为服务的一部分或被扩展事件删除),但也可能用于您的用例。


nat*_*n g 2

我自己一直在寻找解决方案,但也找不到开箱即用的解决方案。但是,可能有一个解决方法(如果您可以测试并确认,我会很高兴)

步骤:
1. 删除复制控制器
2. 删除 X 个所需的 pod
3. 重新创建大小为 X 的复制控制器

  • 而且看起来您可以停止和启动复制控制器,因此也许最好停止它,删除 Pod,使用scale 命令更改副本,然后再次启动它。 (2认同)