Вы должны иметь возможность использовать метку topology.kubernetes.io/zone
(например, topologyKey) и добавлять правила anti-affinity .
Это часть примера anti-affinity :
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: security
operator: In
values:
- S2
topologyKey: failure-domain.beta.kubernetes.io/zone
результат примера задокументирован как
Правило анти-сродства модуля говорит, что модуль не может быть запланирован на узел, если этот узел в той же зоне, что и модуль с меткой, имеющей ключ «security» и значение «S2».
Вместо метки security
в этом примере вы можете использовать, например, app-name: <your-app-name>
в качестве метки и используйте это в своем matchExpression
.