Back to questions
Junior — Middle
72
Каким образом обеспечить размещение двух контейнеров в Kubernetes так, чтобы они не оказались на одной физической ноде?
Companies where asked
Нонтон
Answer from AI
sobes.tech AI
Чтобы гарантировать, что два контейнера не будут размещены на одной физической ноде в Kubernetes, можно использовать Pod Anti-Affinity. Это правило позволяет указать, что поды с определёнными метками не должны находиться на одной ноде.
Пример манифеста с anti-affinity:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
labels:
app: myapp
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- myapp
topologyKey: kubernetes.io/hostname
containers:
- name: container1
image: myimage1
Здесь topologyKey: kubernetes.io/hostname означает, что поды с меткой app: myapp не будут размещены на одном хосте (ноде). Таким образом, если у вас два пода с такой меткой, Kubernetes постарается разместить их на разных нодах.
Если у вас два контейнера в одном поде, то они всегда будут на одной ноде, так как под — минимальная единица размещения. Для разделения контейнеров на разные ноды нужно запускать их в разных подах с anti-affinity.