如何防止独立作业(运行 完成)被 scheduler/autoscaler 逐出?

How do I prevent independent jobs (which run to completion) from being evicted by the scheduler/autoscaler?

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

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

这个注解我也用过

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

但这并不影响资源压力下的 pod 驱逐。

理想情况下,我应该能够告诉 K8s 我的 Pods 中的 none 应该被驱逐,除非它们是完整的。

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

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

请求应等于限制 - 然后您的广告连播将成为有保证的并且不会再被驱逐。

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