第 8 章 功能门
Apache Kafka operator 的流使用功能门来启用或禁用特定功能和功能。启用功能门会更改关联的 Operator 的行为,为 Apache Kafka 部署引入对应的功能。
功能门的目的是在功能完全采用前进行试验和测试。功能门的状态(启用或禁用)默认可能会有所不同,具体取决于其成熟度等级。
作为功能门获取并达到正式发行(GA),它默认转换为启用的状态,并成为 Apache Kafka 部署的 Streams 的永久部分。在 GA 阶段无法禁用功能门。
支持的功能门适用于所有 Apache Kafka operator 的 Streams。虽然一个特定的功能门可能被一个 Operator 使用,但被其他 Operator 忽略,但它仍可在所有 Operator 中配置。当在Kafka 自定义资源的上下文中部署 User Operator 和 Topic Operator 时,Cluster Operator 会自动将功能门配置传播到它们。当独立部署 User Operator 和 Topic Operator 时,没有可用于配置功能门的 Cluster Operator 时,必须在其部署中直接配置它们。
8.1. graduated 功能门(GA) 复制链接链接已复制到粘贴板!
graduated 功能门已正式发布(GA),并被永久启用的功能。
8.1.1. ControlPlaneListener 功能门 复制链接链接已复制到粘贴板!
ControlPlaneListener 功能门为数据复制和协调分离监听程序:
- Kafka 控制器和代理之间的连接在端口 9090 上使用内部 control plane 侦听器。
- 在代理间复制数据,以及从 Apache Kafka operator、Cruise Control 或 Kafka Exporter 的 Streams 的内部连接在端口 9091 上使用 复制监听程序。
永久启用 ControlPlaneListener 功能门后,无法直接升级或降级 Apache Kafka 1.7 及更早的流(Apache Kafka 2.3 及更新版本)。您必须首先通过 Apache Kafka 版本的一个流升级或降级,禁用 ControlPlaneListener 功能门,然后降级或升级(启用了功能门)到目标版本。
8.1.2. ServiceAccountPatching 功能门 复制链接链接已复制到粘贴板!
ServiceAccountPatching 功能门可确保 Cluster Operator 始终协调服务帐户并根据需要更新它们。例如,当您使用自定义资源的 template 属性更改服务帐户标签或注解时,Operator 会在现有服务帐户资源中自动更新它们。
8.1.3. UseStrimziPodSets 功能门 复制链接链接已复制到粘贴板!
UseStrimziPodSets 功能门引入了 StrimziPodSet 自定义资源来管理 Kafka 和 ZooKeeper pod,替换 OpenShift StatefulSet 资源的使用。
永久启用 UseStrimziPodSets 功能门后,无法直接从 Streams for Apache Kafka 2.5 及更新版本降级到 Streams for Apache Kafka 2.0 或更早版本。您必须首先通过一个流进行降级,用于 Apache Kafka 版本 in-between,禁用 UseStrimziPodSets 功能门,然后降级到 Streams for Apache Kafka 2.0 或更早版本。
8.1.4. StableConnectIdentities 功能门 复制链接链接已复制到粘贴板!
StableConnectIdentities 功能门引入了 StrimziPodSet 自定义资源来管理 Kafka Connect 和 Kafka MirrorMaker 2 pod,替换 OpenShift Deployment 资源的使用。
StrimziPodSet 资源为 pod 提供稳定名称和稳定的地址,这些地址在滚动升级过程中不会改变,替换 OpenShift Deployment 资源的使用。
永久启用 StableConnectIdentities 功能门后,无法直接从 Apache Kafka 2.7 及更新版本的流降级到 Streams for Apache Kafka 2.3 或更早版本。您必须首先通过一个流进行降级,用于 Apache Kafka 版本 in-between,禁用 StableConnectIdentities 功能门,然后降级到 Streams for Apache Kafka 2.3 或更早版本。
8.1.5. KafkaNodePools 功能门 复制链接链接已复制到粘贴板!
KafkaNodePools 功能门引入了一个新的 KafkaNodePool 自定义资源,该资源启用配置不同的 Apache Kafka 节点池。
节点池指的是 Kafka 集群中不同的 Kafka 节点组。每个池都有自己的唯一的配置,其中包括强制设置,如副本数、存储配置和分配的角色列表。您可以使用 .spec.roles 属性将 控制器 角色、代理 角色或两个角色都分配给池中的所有节点。当与基于 ZooKeeper 的 Apache Kafka 集群一起使用时,必须将其设置为 broker 角色。与基于 KRaft 的 Apache Kafka 集群一起使用时,它可以设置为 broker、控制器 或两者。
此外,节点池可以自行配置资源请求和限值、Java JVM 选项和资源模板。没有在 KafkaNodePool 资源中设置的配置选项从 Kafka 自定义资源继承。
KafkaNodePool 资源使用 strimzi.io/cluster 标签来指示它们所属的 Kafka 集群。该标签必须设置为 Kafka 自定义资源的名称。Kafka 资源配置还必须包含 strimzi.io/node-pools: enabled 注解,在使用节点池时是必需的。
KafkaNodePool 资源的示例可在 Apache Kafka 的 Streams 提供 的示例配置文件 中找到。
从 KafkaNodePools 降级
如果您的集群已使用 KafkaNodePool 自定义资源,并且希望降级到 Apache Kafka 的旧版本,不支持它们或禁用 KafkaNodePools 功能门,您必须首先从 KafkaNodePool 自定义资源迁移到只使用 Kafka 自定义资源管理 Kafka 节点。如需更多信息,请参阅将 迁移到节点池 的说明。
8.1.6. UnidirectionalTopicOperator 功能门 复制链接链接已复制到粘贴板!
UnidirectionalTopicOperator 功能门引入了一个单向主题管理模式,用于使用 KafkaTopic 资源创建 Kafka 主题。单向模式与使用 KRaft 进行集群管理兼容。使用单向模式,您可以使用 KafkaTopic 资源创建 Kafka 主题,然后由 Topic Operator 管理。对 KafkaTopic 资源之外的主题的任何配置更改都会被恢复。有关主题管理的详情,请参考 第 10.1 节 “主题管理”。
8.1.7. UseKRaft 功能门 复制链接链接已复制到粘贴板!
UseKRaft 功能门引入了 KRaft (Kafka Raft metadata)模式,用来在没有 ZooKeeper 中运行 Apache Kafka 集群。ZooKeeper 和 KRaft 是用于管理 Kafka 集群中元数据和协调操作的机制。KRaft 模式消除了对 ZooKeeper 等外部协调服务的需求。在 KRaft 模式中,Kafka 节点使用代理、控制器或两者的角色。它们一起管理元数据,该元数据在分区之间复制。控制器负责协调操作和维护集群的状态。有关使用 KRraft 的更多信息,请参阅 第 5 章 在 KRaft 模式中使用 Kafka。