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-operatorpod处于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
相关产品推荐
相关产品推荐

