Sobes.tech
Back to questions
Senior
4

Как разнести поды на разные ноды в Kubernetes?

Companies where asked
WildberriesWildberries

Answer from AI

sobes.tech AI

Чтобы разнести поды на разные ноды в Kubernetes, можно использовать несколько подходов:

  1. nodeSelector — простой способ указать, на каких нодах может запускаться под, используя метки нод.

  2. affinity/anti-affinity — более гибкий механизм, позволяющий задавать правила предпочтений и обязательств по размещению подов относительно нод или других подов.

  3. PodTopologySpread — контролирует распределение подов по топологии (например, по нодам), чтобы избежать концентрации.

  4. Taints и Tolerations — позволяют помечать ноды и разрешать запуск подов только с соответствующими толерантностями.

Пример использования anti-affinity для разнесения подов по разным нодам:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - myapp
        topologyKey: "kubernetes.io/hostname"
  containers:
  - name: mycontainer
    image: myimage

Это правило запрещает запускать поды с меткой app: myapp на одной и той же ноде, обеспечивая их распределение.