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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Чтобы разнести поды на разные ноды в 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 на одной и той же ноде, обеспечивая их распределение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее