Вы должны посмотреть на анти-сродство между стручками .Эта функция позволяет вам ограничить, где ваши модули не должны быть запланированы на основе меток модулей, работающих на узле.В вашем случае, если ваше приложение имеет метку app-label
, вы можете использовать его, чтобы гарантировать, что блоки не будут запланированы на узлах, которые имеют блоки с меткой app-label
.Например:
apiVersion: apps/v1
kind: Deployment
...
spec:
selector:
matchLabels:
label-key: label-value
template:
metadata:
labels:
label-key: label-value
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: label-key
operator: In
values:
- label-value
topologyKey: "kubernetes.io/hostname"
...
PS: если вы используете requiredDuringSchedulingIgnoredDuringExecution
, вы можете иметь максимум столько пакетов, сколько у вас есть узлов.Если вы ожидаете иметь больше модулей, чем доступных узлов, вам придется использовать preferredDuringSchedulingIgnoredDuringExecution
, что делает антиаффинность предпочтением, а не обязательством.