29.6. 升级基于 KRaft 的 Kafka 集群


将基于 KRaft 的 Kafka 集群升级到更新支持的 Kafka 版本和 KRaft 元数据版本。

注意

有关基于 KRaft 的升级支持的最新信息,请参阅 Apache Kafka 文档。

先决条件

  • Cluster Operator 已启动并在运行。
  • 在升级 Kafka 集群前,请检查 Kafka 资源的属性 不包含 新的 Kafka 版本不支持的配置选项。

流程

  1. 更新 Kafka 集群配置:

    oc edit kafka <kafka_configuration_file>
  2. 如果配置,请检查当前 spec.kafka.metadataVersion 是否已设置为您要升级到的 Kafka 版本支持的版本。

    例如,如果从 Kafka 版本 3.7.0 升级到 3.8.0,当前版本为 3.7-IV2:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.7-IV2
        version: 3.7.0
        # ...

    如果没有配置 metadataVersion,则 Apache Kafka 的 Streams 会在在下一步中更新到 Kafka 版本后自动更新到当前默认值。

    注意

    metadataVersion 的值必须是字符串,以防止它被解释为浮点数。

  3. 更改 Kafka.spec.kafka.version 以指定新的 Kafka 版本;将 metadataVersion 保留为 当前 Kafka 版本的默认值。

    注意

    更改 kafka.version 可确保升级集群中的所有代理,以使用新的代理二进制文件。在此过程中,一些代理使用旧的二进制文件,而其他代理已升级到新的二进制文件。将 metadataVersion 保持不变到当前设置中,可确保 Kafka 代理和控制器可以在升级过程中继续相互通信。

    例如,如果从 Kafka 3.7.0 升级到 3.8.0 :

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.7-IV2 
    1
    
        version: 3.8.0 
    2
    
        # ...
    1
    元数据版本没有改变
    2
    Kafka 版本已改为新版本。
  4. 如果在 Kafka 自定义资源的 Kafka.spec.kafka.image 中定义了 Kafka 集群 的镜像,请更新该镜像以指向新的 Kafka 版本的容器镜像。

    请参阅 Kafka 版本和镜像映射

  5. 保存并退出编辑器,然后等待滚动更新升级 Kafka 节点完成。

    通过观察 pod 状态转换来检查滚动更新的进度:

    oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'

    滚动更新可确保每个 pod 都使用 Kafka 的新版本的代理二进制文件。

  6. 如果需要,将 Kafka Connect 和 MirrorMaker 的 version 属性设置为 Kafka 的新版本:

    1. 对于 Kafka Connect,更新 KafkaConnect.spec.version
    2. 对于 MirrorMaker,更新 KafkaMirrorMaker.spec.version
    3. 对于 MirrorMaker 2,更新 KafkaMirrorMaker2.spec.version

      注意

      如果使用手动构建的自定义镜像,您必须重建这些镜像以确保它们与 Apache Kafka 基础镜像的最新流最新。例如,如果您从 基础 Kafka Connect 镜像创建了容器镜像,请更新 Dockerfile 以指向最新的基础镜像和构建配置。

  7. 如果配置,将 Kafka 资源更新为使用新的 metadataVersion 版本。否则,请转到第 9 步。

    例如,如果升级到 Kafka 3.8.0 :

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.8-IV2
        version: 3.8.0
        # ...
    警告

    更改 metadataVersion 时请小心,因为可能无法降级。如果新 Kafka 版本的 metadataVersion 高于您要降级的 Kafka 版本,则无法降级 Kafka。但是,了解维护旧版本时对支持和兼容性的潜在影响。

  8. 等待 Cluster Operator 更新集群。

    检查升级已从 Kafka 资源的状态 成功完成。

升级客户端应用程序

确保所有 Kafka 客户端应用程序都已更新为使用客户端二进制文件的新版本,作为升级过程的一部分,并验证其与 Kafka 升级的兼容性。如果需要,与负责管理客户端应用程序的团队协调。

提示

要检查客户端是否使用最新的消息格式,请使用 kafka.server:type=BrokerTopicMetrics,name={Produce|Fetch}MessageConversionsPerSec 指标。如果使用最新的消息格式,指标会显示 0。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部