Чтобы запустить две реплики контейнера так, чтобы они не размещались на одной рабочей ноде, в Kubernetes можно использовать аннотации или спецификации, обеспечивающие распределение подов по разным нодам.
Есть ли возможность обеспечить, чтобы несколько реплик приложения гарантированно разбегались по разным нодам?
Чтобы запустить две реплики контейнера так, чтобы они не размещались на одной рабочей ноде, в Kubernetes можно использовать аннотации или спецификации, обеспечивающие распределение подов по разным нодам.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Чтобы запустить две реплики контейнера так, чтобы они не размещались на одной рабочей ноде, в Kubernetes можно использовать аннотации или спецификации, обеспечивающие распределение подов по разным нодам.
Один из способов — использовать podAntiAffinity в манифесте Deployment или StatefulSet. Пример:
spec:
replicas: 2
template:
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: "kubernetes.io/hostname"
Это гарантирует, что поды с меткой app: my-app не будут размещены на одной и той же ноде (узле) по ключу kubernetes.io/hostname.
Если речь не о Kubernetes, а о другом оркестраторе, принцип схож: нужно настроить правила распределения или ограничения на размещение, чтобы реплики не попадали на одну машину.