// This module is included in:
//
// overview/assembly-configuration-points.adoc

[id="configuration-points-node_pools_{context}"]
= (Preview) Kafka node pools configuration

[role="_abstract"]
A node pool refers to a distinct group of Kafka nodes within a Kafka cluster.
By using node pools, nodes can have different configuration within the same Kafka cluster.
Configuration options not specified in the node pool are inherited from the Kafka configuration.

The node pools feature is available as a preview that can be enabled using the `KafkaNodePool` feature gate.
You can deploy a Kafka cluster with one or more node pools.
The node pool configuration includes mandatory and optional settings.
Configuration for replicas, roles, and storage is mandatory.

If you are using KRaft mode (which is also available as a preview), you can specify roles for all nodes in the node pool to operate as brokers, controllers, or both.
Controller and dual roles are specific to KRaft.
If you are using Kafka clusters that use ZooKeeper for cluster management, you can use node pools that are configured with broker roles only. 

[discrete]
== Example YAML showing node pool configuration
[source,shell,subs="+attributes"]
----
apiVersion: {KafkaNodePoolApiVersion}
kind: KafkaNodePool
metadata:
  name: pool-a
  labels:
    strimzi.io/cluster: my-cluster
spec:
  replicas: 3
  roles:
    - broker
  storage:
    type: jbod
    volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
---- 

IMPORTANT: **KRaft mode is not ready for production in Apache Kafka or in Strimzi.**