【问题标题】:Kubernetes scale down specific podsKubernetes 缩减特定的 pod
【发布时间】:2016-02-10 13:39:27
【问题描述】:

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

【问题讨论】:

  • 据我所知还没有。我记得读过一个开放的问题,他们试图实施某种检查以查看 pod 是否可以关闭。
  • 检查this answer 寻找可能的解决方案。

标签: replication kubernetes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以使用 controller.kubernetes.io/pod-deletion-cost: -999 注释特定的 pod 并启用 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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 看起来你可以停止并启动复制控制器,所以最好停止它,删除 pod,使用 scale 命令更改副本并重新启动它。
      【解决方案4】:

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

      别名 k=kubectl

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

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

      【讨论】:

        猜你喜欢
        • 2020-04-16
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 2018-10-09
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        相关资源
        最近更新 更多