3.2 Pod Affinity (or Anti-affinity) Rules
The ocnaddkafka and Zookeeper services use the POD anti-affinity rules. The rules are intended to support even distribution of Kafka and Zookeeper pods across the available nodes.
Zookeeper Service Anti-affinity Rules
Zookeeper service anti-affinity rules are listed below:
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- zookeeper
topologyKey: topology.kubernetes.io/zone
ocnaddkafka Service Anti-affinity Rules
ocnaddkafka service anti-affinity rules are listed below:
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app1 : nodeselection
The configuration ensures the scheduler keeps equal number of pods matching the constraint on every node. However, the parameter whenUnsatisfiable
set to ScheduleAnyway
, helps to schedule the pod, but the scheduler prioritizes honoring the skew to not make the cluster more imbalanced.