7.4. (预览)使用KRaft 功能门
UseKRaft 功能门 禁用的 默认状态。
UseKRaft 功能门在 KRaft (Kafka Raft metadata)模式中部署 Kafka 集群,而无需 ZooKeeper。ZooKeeper 和 KRaft 是用于管理 Kafka 集群中元数据和协调操作的机制。KRaft 模式消除了对 ZooKeeper 等外部协调服务的需求。在 KRaft 模式中,Kafka 节点使用代理、控制器或两者的角色。它们一起管理元数据,该元数据在分区之间复制。控制器负责协调操作和维护集群的状态。
此功能门目前仅适用于开发和测试。
KRaft 模式在 Apache Kafka 或 AMQ Streams 中不适用于生产环境。
启用 UseKRaft 功能门需要启用 KafkaNodePools 功能门。要以 KRaft 模式部署 Kafka 集群,您必须使用 KafkaNodePool 资源。如需了解更多详细信息和示例,请参阅 第 6.3.2 节 “(预览)部署 Kafka 节点池”。使用 KRaft 模式的 Kafka 自定义资源还必须具有注解 strimzi.io/kraft: enabled。
当启用 UseKRaft 功能门并设置了这样的注解时,Kafka 集群会在没有 ZooKeeper 的情况下部署。Kafka 自定义资源中的 .spec.zookeeper 属性会被忽略,但仍然需要存在。UseKRaft 功能门提供了一个 API,用于配置 Kafka 集群节点及其角色。API 仍然处于开发阶段,在 KRaft 模式为 production-ready 前可能会有变化。
目前,AMQ Streams 中的 KRaft 模式有以下主要限制:
- 不支持从 ZooKeeper 移动到 KRaft 集群或其他方法。
- 只有 controller-only 节点无法单独进行滚动更新或单独更新。
- 不支持升级和降级 Apache Kafka 版本或 AMQ Streams operator。用户可能需要删除集群,升级 Operator 并部署一个新的 Kafka 集群。
-
KRaft 模式 只支持 Un idirectional Topic Operator。您可以使用
UnidirectionalTopicOperator功能门启用它。不支持 Bidirectional Topic Operator,当没有启用UnidirectionalTopicOperator功能门时,spec.entityOperator.topicOperator属性 必须从Kafka自定义资源中删除。 -
不支持 JBOD 存储。可以使用
type: jbod存储,但 JBOD 数组只能包含一个磁盘。
启用 UseKRaft 功能门
要启用 UseKRaft 功能门,在 Cluster Operator 配置中的 STRIMZI_FEATURE_GATES 环境变量中指定 +UseKRaft,+KafkaNodePools。使用 KRaft 模式的 Kafka 自定义资源还必须具有注解 strimzi.io/kraft: enabled。如果此类注解被设置为 disabled,如果没有设置或设置为任何其他值,Operator 将处理 Kafka 自定义资源,如使用 ZooKeeper 模式一样。