diff --git a/docs/modules/kafka/pages/usage-guide/operations/pod-disruptions.adoc b/docs/modules/kafka/pages/usage-guide/operations/pod-disruptions.adoc index 8c174213e..57c9e86cf 100644 --- a/docs/modules/kafka/pages/usage-guide/operations/pod-disruptions.adoc +++ b/docs/modules/kafka/pages/usage-guide/operations/pod-disruptions.adoc @@ -6,5 +6,11 @@ You can configure the permitted Pod disruptions for Kafka nodes as described in Unless you configure something else or disable the default PodDisruptionBudgets (PDBs), the operator writes the following PDBs: == Brokers -Allow only a single Broker to be offline at any given time, regardless of the number of replicas or `roleGroups`. + +Only a single Broker is allowed to be offline at any given time, regardless of the number of replicas or roleGroups. This is because we can not make any assumptions about topic replication factors. + +== KRaft controllers + +Only a single Controller is allowed to be offline at any given time, regardless of the number of replicas or roleGroups. +This is because they build a quorum for metadata. diff --git a/rust/operator-binary/src/controller/build/resource/pdb.rs b/rust/operator-binary/src/controller/build/resource/pdb.rs index f649e1df8..a8777170b 100644 --- a/rust/operator-binary/src/controller/build/resource/pdb.rs +++ b/rust/operator-binary/src/controller/build/resource/pdb.rs @@ -40,6 +40,8 @@ fn max_unavailable_brokers() -> u16 { } fn max_unavailable_controllers() -> u16 { - // TODO: what do we want here? + // Controllers build a quorum for metadata stuff, so fall below the "Multiple replicas to + // increase availability" category. We basically treat them in the same way we treat ZooKeeper + // nodes. 1 }