我有一组Pods运行命令,可能需要几秒钟。有一个流程可以跟踪开放请求和哪个Pod正在运行请求。我希望在缩小pod时使用该信息 - 通过指定要尝试离开的pod,或指定要关闭的pod。更改副本数量时是否可以指定此类信息,例如我想要X副本,尽量不要在pod A,B,C上杀死我长时间运行的任务?
答案 0 :(得分:1)
目前无法实现。缩小副本数量时,系统将选择一个删除;没有办法“暗示”你希望删除哪一个。
您可以做的一件事是您可以更改运行pod上的标签,这些标签会影响其在复制控制器中的成员身份。这可以用于隔离要调试的pod(以便它们不是服务的一部分或由扩展事件删除),但也可以用于您的用例。
答案 1 :(得分:1)
我自己一直在寻找解决方案,我也无法找到开箱即用的解决方案。 但是,可能有一种解决方法(如果你可以测试并确认它会喜欢它)
步骤:
1.删除复制控制器
2.删除X所需的pods
3.重新创建大小为X的复制控制器
答案 2 :(得分:0)
如上所述,此操作的解决方法应如下所示:
<块引用>别名 k=kubectl
<块引用>k delete pod
确保您没有与部署相关的活动 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