<p>I'm trying to understand the relationship among Kubernetes pods and the cores and memory of my cluster nodes when using Dask.</p>

<p>My current setup is as follows:</p>

<ul>
<li>Kubernetes cluster using GCP's Kubernetes Engine</li>
<li>Helm package manager to install Dask on the cluster</li>
</ul>

<p>Each node has 8 cores and 30 gb of ram. I have 5 nodes in my cluster:</p>

<p><a href="https://i.stack.imgur.com/JnEFa.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/JnEFa.png" alt="cluster info"></a></p>

<p>I then scaled the number of pods to 50 by executing</p>

<pre><code>kubectl scale --replicas 50 deployment/nuanced-armadillo-dask-worker
</code></pre>

<p>When I initialize the client in Dask using <code>dask.distributed</code> I see the following</p>

<p><a href="https://i.stack.imgur.com/ZKoex.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZKoex.png" alt="dask distributed client info"></a></p>

<p>What puzzles me is that the client says that there are 400 cores and 1.58 tb of memory in my cluster (see screenshot). I suspect that by default each pod is being allocated 8 cores and 30 gb of memory, but how is this possible given the constraints on the actual number of cores and memory in each node?</p>

<p>If you don't specify a number of cores or memory then every Dask worker tries to take up the entire machine on which it is running.</p>

<p>For the helm package you can specify the number of cores and amount of memory per worker by adding resource limits to your worker pod specification.  These are listed in the configuration options of the chart.</p>
