Есть Deployment с количеством реплик: 2
Есть две ноды, на которых он запускается.
Как принудительно разделить поды по разным нодам?
Варианты с topologySpreadConstraints или podAntiAffinity работают только на старте. Затем, если сделать простой редеплой (или обновление) Deployment, поды все равно размещаются на одной ноде.
Происходит это из-за RollingUpdate: удаляемые (но еще работающие) поды учитываются при размещении и получается так, что две новых пода запускаются на одной и той же ноде.
Вопрос в том, как заставить k8s даже при редеплое размещать поды по отдельным нодам?
Хотелось бы оставить RollingUpdate
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: appname
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- appname
topologyKey: kubernetes.io/hostname