25.6. 升级基于 KRaft 的 Kafka 集群和客户端应用程序
将基于 KRaft 的 Apache Kafka 集群的流升级到较新的支持的 Kafka 版本和 KRaft 元数据版本。
您还应选择升级客户端的策略。在此流程的第 6 步中升级 Kafka 客户端。
有关基于 KRaft 的升级支持的最新信息,请参阅 Apache Kafka 文档。
先决条件
- Cluster Operator 已启动并在运行。
-
在升级 Apache Kafka 集群的 Streams 前,请检查
Kafka
资源的属性 不包含 新的 Kafka 版本不支持的配置选项。
流程
更新 Kafka 集群配置:
oc edit kafka <kafka_configuration_file>
如果配置,请检查当前
spec.kafka.metadataVersion
是否已设置为您要升级到的 Kafka 版本支持的版本。例如,如果从 Kafka 版本 3.6.0 升级到 3.7.0,则当前版本为 3.6-IV2:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.6-IV2 version: 3.6.0 # ...
如果没有配置
metadataVersion
,则 Apache Kafka 的 Streams 会在在下一步中更新到 Kafka 版本后自动更新到当前默认值。注意metadataVersion
的值必须是字符串,以防止它被解释为浮点数。更改
Kafka.spec.kafka.version
以指定新的 Kafka 版本;将metadataVersion
保留为 当前 Kafka 版本的默认值。注意更改
kafka.version
可确保升级集群中的所有代理,以使用新的代理二进制文件。在此过程中,一些代理使用旧的二进制文件,而其他代理已升级到新的二进制文件。将metadataVersion
保持不变到当前设置中,可确保 Kafka 代理和控制器可以在升级过程中继续相互通信。例如,如果从 Kafka 3.6.0 升级到 3.7.0 :
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.6-IV2 1 version: 3.7.0 2 # ...
如果在 Kafka 自定义资源的
Kafka.spec.kafka.image
中定义了Kafka
集群的镜像
,请更新该镜像以指向新的 Kafka 版本的容器镜像。请参阅 Kafka 版本和镜像映射
保存并退出编辑器,然后等待滚动更新升级 Kafka 节点完成。
通过观察 pod 状态转换来检查滚动更新的进度:
oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'
滚动更新可确保每个 pod 都使用 Kafka 的新版本的代理二进制文件。
根据您选择的 策略来升级客户端,升级所有客户端应用程序以使用客户端二进制文件的新版本。
如果需要,将 Kafka Connect 和 MirrorMaker 的
version
属性设置为 Kafka 的新版本:-
对于 Kafka Connect,更新
KafkaConnect.spec.version
。 -
对于 MirrorMaker,更新
KafkaMirrorMaker.spec.version
。 对于 MirrorMaker 2,更新
KafkaMirrorMaker2.spec.version
。注意如果使用手动构建的自定义镜像,您必须重建这些镜像以确保它们与 Apache Kafka 基础镜像的最新流最新。例如,如果您从 基础 Kafka Connect 镜像创建了容器镜像,请更新 Dockerfile 以指向最新的基础镜像和构建配置。
-
对于 Kafka Connect,更新
- 验证升级的客户端应用程序是否与新的 Kafka 代理正常工作。
如果配置,将 Kafka 资源更新为使用新的
metadataVersion
版本。否则,请转到第 9 步。例如,如果升级到 Kafka 3.7.0 :
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 3 metadataVersion: 3.7-IV2 version: 3.7.0 # ...
警告更改
metadataVersion
时请小心,因为可能无法降级。如果新 Kafka 版本的metadataVersion
高于您要降级的 Kafka 版本,则无法降级 Kafka。但是,了解维护旧版本时对支持和兼容性的潜在影响。等待 Cluster Operator 更新集群。
您可以从
Kafka
资源的状态检查升级是否已成功完成。