Kubernetes缩小特定的豆荚

时间:2015-11-09 19:50:46

标签: replication kubernetes

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

4 个答案:

答案 0 :(得分:1)

目前无法实现。缩小副本数量时,系统将选择一个删除;没有办法“暗示”你希望删除哪一个。

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

答案 1 :(得分:1)

我自己一直在寻找解决方案,我也无法找到开箱即用的解决方案。 但是,可能有一种解决方法(如果你可以测试并确认它会喜欢它)

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

答案 2 :(得分:0)

如上所述,此操作的解决方法应如下所示:

<块引用>

别名 k=kubectl

<块引用>

k delete pod && k scale --replicas= deploy/

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

答案 3 :(得分:0)

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

<块引用> 可以设置

controller.kubernetes.io/pod-deletion-cost 注释以提供有关删除 Pod 与属于同一 ReplicaSet 的其他 Pod 的成本的提示。删除成本较低的 Pod 会先被删除。

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