Kubernetes 如何配置K8s群集以利用备用CPU容量进行ML培训作业(或其他低优先级CPU密集型工作)

Kubernetes 如何配置K8s群集以利用备用CPU容量进行ML培训作业(或其他低优先级CPU密集型工作),kubernetes,google-kubernetes-engine,devops,kubernetes-pod,cost-management,Kubernetes,Google Kubernetes Engine,Devops,Kubernetes Pod,Cost Management,我希望将kubernetes集群中的空闲CPU容量用于低优先级作业——在本例中,特别是使用Tensorflow的ML培训——而不会在集群中的高优先级服务突然出现峰值时从CPU中剥夺它们,类似于操作系统进程优先级的情况。目前,我们将autoscaler配置为在CPU使用率超过60%时添加更多节点,这意味着多达40%的CPU始终未使用 问题: (1) K8s是否可以实现这一点?经过一些实验,似乎不是这样 完全相同,因为我的低优先级部署不会立即让CPU回到高优先级部署。 (2) 如果不可能,是否有另一

我希望将kubernetes集群中的空闲CPU容量用于低优先级作业——在本例中,特别是使用Tensorflow的ML培训——而不会在集群中的高优先级服务突然出现峰值时从CPU中剥夺它们,类似于操作系统进程优先级的情况。目前,我们将autoscaler配置为在CPU使用率超过60%时添加更多节点,这意味着多达40%的CPU始终未使用

问题: (1) K8s是否可以实现这一点?经过一些实验,似乎不是这样 完全相同,因为我的低优先级部署不会立即让CPU回到高优先级部署。 (2) 如果不可能,是否有另一种普遍使用的策略来利用故意过度配置的CPU容量,但立即向更高优先级的服务屈服?

根据

在过度提交的系统中(限制之和>机器容量),容器可能最终必须被终止,例如,如果系统耗尽CPU或内存资源。理想情况下,我们应该杀死不那么重要的容器。对于每个资源,我们将容器按优先级降序分为3个QoS类:保证、负载稳定和尽力而为

你可以这样做:

设高到保证值

containers:
  name: high
    resources:
      limits:
        cpu: 8000m
        memory: 8Gi
将ml作业设置为“尽力而为”

containers:
  name: ml-job
我不确定你的ml工作是否会被杀。如果不是,那么这个策略可能不适合您