<p>Suppose there is a k8s cluster which is made up of <strong>nodes of different hardware specs</strong>.</p>
<p>Then 2 pods are allocated to 2 different nodes.</p>
<p>Suppose the container in the pod had specified <strong>1000m cpu</strong>.</p>
<p>Could the two containers running on those 2 different nodes show different levels of performance?</p>
<p>To ask more directly: in a heterogeneous k8s cluster, could containers perform differently(iops, cpu, mem, etc) due to which node it happens to be allocated to?</p>

Cui Pengfei 崔鹏飞
<p>Yes. If two Pods both specify e.g. 1000m CPU and they run on different nodes, they both get an equivalent of 1 CPU core on their node. If one node has a faster CPU than the other node, then the Pod on this node correspondingly runs faster.</p>
<p>The same applies for other hardware characteristics of the nodes, e.g. the availability of a GPU, the speed of the memory and cache, etc.</p>
<p>If you want a more deterministic behaviour, you can categorise your nodes with labels or assign <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/" rel="noreferrer">taints</a> to them. Then, on the Pod side, you can influence  what node a Pod gets scheduled to with <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/" rel="noreferrer">tolerations</a>, <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector" rel="noreferrer">node selectors</a>, <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity" rel="noreferrer">node affinities</a>, or even a <a href="https://kubernetes.io/docs/tasks/extend-kubernetes/configure-multiple-schedulers/" rel="noreferrer">custom scheduler</a>.</p>
