Kubernetes 缩减特定 pods
Kubernetes scale down specific pods
我有一组 Pods 运行 命令,最多可能需要几秒钟。有一个进程可以跟踪打开的请求以及请求 运行 在哪个 Pod 上。我希望在缩小 pods 时使用该信息 - 通过指定要尝试离开的 pods 或指定要关闭的 pods 。是否可以在更改副本数时指定此类信息,例如我想要 X 个副本,尽量不要杀死我在 pods A、B、C 上的长 运行 任务?
这目前是不可能的。当你缩减副本数量时,系统会选择一个移除;没有办法 "hint" 您希望删除哪个。
您可以做的一件事是更改 运行 pods 上的标签,这会影响它们在复制控制器中的成员资格。这可用于隔离您要调试的 pods(这样它们就不会成为服务的一部分或被扩展事件删除),但也可以用于您的用例。
我一直在寻找自己的解决方案,但我也找不到开箱即用的解决方案。
但是,可能有解决方法(如果您可以测试并确认,我会很高兴)
步骤:
1.删除复制控制器
2.删除所需的X个pods
3. 重新创建大小为 X
的复制控制器
如上所述,此操作的解决方法应该是这样的:
alias k=kubectl
k delete pod <pods_name> && k scale --replicas=<current_replicas - 1> deploy/<name_of_deployment>
确保您没有与部署相关的活动 hpa 资源。
您可以使用 controller.kubernetes.io/pod-deletion-cost: -999
注释特定 pod 并启用 PodDeletionCost
featuregate。此功能在 1.21 中实现 alpha,在 1.22 中实现 beta。
controller.kubernetes.io/pod-deletion-cost
annotation can be set to offer a hint on the cost of deleting a pod compared to other pods belonging to the same ReplicaSet. Pods with lower deletion cost are deleted first.
https://github.com/kubernetes/kubernetes/pull/99163
https://github.com/kubernetes/kubernetes/pull/101080
我有一组 Pods 运行 命令,最多可能需要几秒钟。有一个进程可以跟踪打开的请求以及请求 运行 在哪个 Pod 上。我希望在缩小 pods 时使用该信息 - 通过指定要尝试离开的 pods 或指定要关闭的 pods 。是否可以在更改副本数时指定此类信息,例如我想要 X 个副本,尽量不要杀死我在 pods A、B、C 上的长 运行 任务?
这目前是不可能的。当你缩减副本数量时,系统会选择一个移除;没有办法 "hint" 您希望删除哪个。
您可以做的一件事是更改 运行 pods 上的标签,这会影响它们在复制控制器中的成员资格。这可用于隔离您要调试的 pods(这样它们就不会成为服务的一部分或被扩展事件删除),但也可以用于您的用例。
我一直在寻找自己的解决方案,但我也找不到开箱即用的解决方案。 但是,可能有解决方法(如果您可以测试并确认,我会很高兴)
步骤:
1.删除复制控制器
2.删除所需的X个pods
3. 重新创建大小为 X
如上所述,此操作的解决方法应该是这样的:
alias k=kubectl
k delete pod <pods_name> && k scale --replicas=<current_replicas - 1> deploy/<name_of_deployment>
确保您没有与部署相关的活动 hpa 资源。
您可以使用 controller.kubernetes.io/pod-deletion-cost: -999
注释特定 pod 并启用 PodDeletionCost
featuregate。此功能在 1.21 中实现 alpha,在 1.22 中实现 beta。
controller.kubernetes.io/pod-deletion-cost
annotation can be set to offer a hint on the cost of deleting a pod compared to other pods belonging to the same ReplicaSet. Pods with lower deletion cost are deleted first.
https://github.com/kubernetes/kubernetes/pull/99163 https://github.com/kubernetes/kubernetes/pull/101080