You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka 2.7升3.6.1及Strimzi Operator 0.24升0.39升级咨询

升级Strimzi Operator与Kafka的可行性及策略

是否可以跳过中间版本直接升级?

不行,不管是Strimzi Operator还是Kafka,都不能直接跨多个不兼容的大版本跳级。两者的版本存在严格的兼容绑定关系,跨版本跳级会导致集群协议不兼容、Operator无法识别Kafka资源、数据丢失或集群不可用等问题,必须遵循逐步升级的路径。

具体升级策略

前置准备

  • 备份Kafka集群数据:通过K8s持久卷快照备份Broker数据,或用kafka-dump-log.sh备份主题元数据与消息
  • 备份Strimzi自定义资源:执行kubectl get kafkas -o yaml -n <your-namespace> > kafka-cr-backup.yaml保存当前Kafka配置
  • 确认K8s 1.26兼容性:Strimzi 0.24至0.39均支持K8s 1.22+,无需担心版本冲突
  • 暂停业务写入(可选):如果业务无法容忍短暂Broker重启,建议暂停生产流量,待升级完成后恢复

步骤1:升级Strimzi Operator至0.25版本

0.25是衔接旧版(0.24)与新版(支持Kafka 3.x)的过渡版本,兼容当前的Kafka 2.7,同时支持Kafka 2.8、3.0。

  • 卸载0.24版本Operator:
    kubectl delete -f https://strimzi.io/install/0.24.0?namespace=<your-namespace>
    
  • 安装0.25版本Operator:
    kubectl create -f https://strimzi.io/install/0.25.0?namespace=<your-namespace>
    
  • 验证状态:执行kubectl get pods -n <your-namespace>,确保strimzi-cluster-operator pod处于Running状态,日志无报错。

步骤2:升级Kafka从2.7到2.8

2.8是Kafka 2.x系列的最后一个版本,是升级到3.x的必经过渡版本(解决了2.x与3.x之间的协议兼容问题)。

  • 编辑Kafka自定义资源(CR),将spec.kafka.version修改为2.8.2(Strimzi 0.25支持的最新2.8小版本)
  • 应用修改:
    kubectl apply -f <your-kafka-cr-file>.yaml
    
  • 监控滚动升级:观察kafka-* pod依次重启,执行kubectl get kafka <cluster-name> -n <your-namespace>,直到STATUS变为Ready。

步骤3:升级Kafka从2.8到3.0

Strimzi 0.25原生支持Kafka 3.0,无需先升级Operator。

  • 编辑Kafka CR,将spec.kafka.version修改为3.0.2
  • 应用修改并监控滚动升级,确认集群状态恢复为Ready。

步骤4:升级Strimzi Operator至0.39版本

0.39支持Kafka 3.3至3.6.1,完全兼容当前的Kafka 3.0集群。

  • 卸载0.25版本Operator:
    kubectl delete -f https://strimzi.io/install/0.25.0?namespace=<your-namespace>
    
  • 安装0.39版本Operator:
    kubectl create -f https://strimzi.io/install/0.39.0?namespace=<your-namespace>
    
  • 验证Operator正常运行,能识别现有Kafka集群。

步骤5:升级Kafka从3.0到3.6.1

Kafka 3.x系列内部支持跨小版本直接升级,无需逐步升级中间3.x版本。

  • 编辑Kafka CR,将spec.kafka.version修改为3.6.1
  • 应用修改,监控滚动升级过程,直到所有Broker完成升级,集群状态为Ready。

步骤6:业务验证

  • 恢复业务生产流量
  • 验证生产者、消费者正常工作,检查Broker与客户端日志无异常
  • 执行以下命令确认主题与集群状态:
    kubectl exec -n <your-namespace> <kafka-pod-name> -- kafka-topics.sh --bootstrap-server localhost:9092 --list
    kubectl exec -n <your-namespace> <kafka-pod-name> -- kafka-broker-api-versions.sh --bootstrap-server localhost:9092
    

关键注意事项

  • 每次升级后必须等待集群完全Ready再进行下一步,避免因未完成升级导致的异常
  • Kafka 3.6需要JDK 11或更高版本,若当前使用JDK 8,需在Kafka CR中指定包含JDK 11的Strimzi镜像(如quay.io/strimzi/kafka:0.39.0-kafka-3.6.1)
  • 若使用ZooKeeper模式,升级过程无需强制迁移至KRaft,可后续按需操作
  • 升级期间可能出现短暂的Broker重启,需确保业务客户端配置了重试机制

内容的提问来源于stack exchange,提问作者Shiny Dhas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:34:54