Как разнести поды на разные ноды в Kubernetes?
Ответ от нейросети
sobes.tech AI
Чтобы разнести поды на разные ноды в Kubernetes, можно использовать несколько подходов:
-
nodeSelector — простой способ указать, на каких нодах может запускаться под, используя метки нод.
-
affinity/anti-affinity — более гибкий механизм, позволяющий задавать правила предпочтений и обязательств по размещению подов относительно нод или других подов.
-
PodTopologySpread — контролирует распределение подов по топологии (например, по нодам), чтобы избежать концентрации.
-
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 на одной и той же ноде, обеспечивая их распределение.