如何设置Pod以使用所有可用的CPU内核

时间:2019-11-23 12:56:46

标签: apache-spark kubernetes yaml

我尝试使用K8s设置Spark集群(我使用独立部署模式,由于某种原因我无法使用k8s部署模式)

我没有设置任何与CPU相关的参数。

对于火花,这意味着:

  

总共可以允许Spark应用程序在计算机上使用的CPU内核(默认值:全部可用);仅在工人上

     

http://spark.apache.org/docs/latest/spark-standalone.html

对于k8s吊舱,这意味着:

  

如果您未为容器指定CPU限制,则适用以下情况之一:

     
      
  • 容器在可使用的CPU资源上没有上限。容器可以使用运行它的节点上所有可用的CPU资源。

  •   
  • 容器在具有默认CPU限制的命名空间中运行,并且自动为容器分配了默认限制。群集管理员可以使用LimitRange指定CPU限制的默认值。

  •   
     

https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/

$this->user()

但是我的spark worker仅使用1个核心(我在worker节点上具有4个核心,并且命名空间没有资源限制)。

这意味着spark worker pod只使用了节点的1个核心(应该是4个)。

如何编写yaml文件以将pod设置为使用所有可用的cpu内核?

这是我的Yaml文件:

public function setUp(): void
{
    parent::setUp();

    $this->subject = new \App\Http\Requests\OrderStoreRequest();
}

// Acting as has no effect when manually creating the orderStoreRequest object
public function testAuthorize()
{
    $this
        ->actingAs(\factory(User::class)->create())
        ->assertTrue($this->subject->authorize());
}

1 个答案:

答案 0 :(得分:1)

Kubernetes-没有上限

  

容器在可以使用的CPU资源上没有上限。容器可以使用其正在运行的节点上所有可用的CPU资源

除非您为Pod配置CPU上的limit,否则它可以使用节点上所有可用的CPU资源。

考虑专用节点

如果您在同一节点上运行其他工作负载,它们也会消耗CPU资源,并且如果它们为CPU配置了request,则可能会保证有CPU资源。考虑使用NodeSelectorTaints and Tolerations为工作负载使用专用节点。

火花-没有上限

configure the slave使用start-slave.sh的参数,例如--cores X限制 CPU核心使用率。

  

允许在计算机上使用Spark应用程序的全部CPU内核(默认:全部可用);仅在工人上

多线程工作负载

最后,pod是否可以使用多个CPU内核取决于您的应用程序使用线程的方式。有些东西只使用一个线程,因此该应用程序必须设计用于多线程,并且必须要做 parallelized