Get started (free)

Pod placement

You can configure Pod placement for Kafka brokers as described in Pod placement.

By default, the operator configures the following Pod placement constraints:

affinity:
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - podAffinityTerm:
        labelSelector:
          matchLabels:
            app.kubernetes.io/component: broker
            app.kubernetes.io/instance: cluster-name
            app.kubernetes.io/name: kafka
        topologyKey: kubernetes.io/hostname
      weight: 70

In the example above cluster-name is the name of the Kafka custom resource that owns this Pod.

If OPA authorization is configured, the broker Pods additionally prefer to run on the same Kubernetes nodes as the OPA Pods (weight 50). Only brokers are configured with the OPA authorizer, as they are the only role issuing OPA requests.

affinity:
  podAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - podAffinityTerm:
        labelSelector:
          matchLabels:
            app.kubernetes.io/component: server
            app.kubernetes.io/instance: opa-cluster-name
            app.kubernetes.io/name: opa
        topologyKey: kubernetes.io/hostname
      weight: 50

opa-cluster-name is the configMapName from spec.clusterConfig.authorization.opa, which by convention is the name of the OpaCluster.