Junior — Middle
Wie kann man die Platzierung von zwei Containern in Kubernetes so sicherstellen, dass sie nicht auf demselben physischen Knoten laufen?
sobes.tech KI
Antwort von 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.