29.6. 升级基于 KRaft 的 Kafka 集群


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

注意

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

先决条件

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

流程

  1. 更新 Kafka 集群配置:

    oc edit kafka <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
  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
        # ...
    Copy to Clipboard Toggle word wrap

    如果没有配置 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
    
        # ...
    Copy to Clipboard Toggle word wrap
    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}'
    Copy to Clipboard Toggle word wrap

    滚动更新可确保每个 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
        # ...
    Copy to Clipboard Toggle word wrap
    警告

    更改 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

© 2025 Red Hat