【问题标题】:How do I prevent independent jobs (which run to completion) from being evicted by the scheduler/autoscaler?如何防止独立作业(运行完成)被调度程序/自动缩放器驱逐?
【发布时间】:2019-09-13 11:07:21
【问题描述】:

我有一个运行独立作业的 K8s 集群(每个作业都有一个 pod),我希望它们能够运行完成。然而,调度器有时会在不同的节点上重新调度它们。我的工作需要单次运行,并且在不同的节点上重新启动它们对我来说是不可接受的结果。

我正在查看 Pod 中断预算 (PDB),但据我了解,他们的选择器适用于 pod 标签。由于我的每一项工作都不同并且有一个单独的标签,我如何使用 PDB 告诉 K8s 我的 所有 pod 的 maxUnavailable 为 0?

我也用过这个注解

"cluster-autoscaler.kubernetes.io/safe-to-evict": false

但这不会影响 pod 驱逐对资源压力的影响。

理想情况下,我应该能够告诉 K8s,除非它们是完整的,否则我的任何 Pod 都不应该被驱逐。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine kubernetes-jobs


    【解决方案1】:

    您应该指定资源以使您的工作成为有保证的服务质量:

    resources:
      limits:
        memory: "200Mi"
        cpu: "700m"
      requests:
        memory: "200Mi"
        cpu: "700m"
    

    请求应该等于限制 - 然后您的 pod 将成为 Guaranteed 并且不会再被驱逐。

    阅读更多:https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      相关资源
      最近更新 更多