Kubernetes 缩小特定 Pod 规模

问题描述 投票:0回答:5

我有一组 Pod 运行命令,可能需要长达几秒钟的时间。有一个进程可以跟踪打开的请求以及该请求正在哪个 Pod 上运行。我希望在缩小 Pod 规模时使用该信息 - 通过指定尝试离开哪些 Pod,或者指定要关闭哪些 Pod。更改副本数时是否可以指定此类信息,例如我想要 X 个副本,尽量不要终止我在 Pod A、B、C 上长时间运行的任务?

replication kubernetes
5个回答
6
投票

您可以使用

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

可以设置

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

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


5
投票

目前这是不可能的。当你缩小副本数量时,系统会选择删除一个;没有一种方法可以“提示”您想要删除哪一个。

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


2
投票

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

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


0
投票

kubectl scale deployment --replicas=5 my-app


-1
投票

如上所述,此操作的解决方法应该是这样的:

别名 k=kubectl

k 删除 pod && k 规模 --replicas= 部署/

确保您没有与部署相关的活动 hpa 资源。

© www.soinside.com 2019 - 2024. All rights reserved.