从 ZooKeeper 迁移到 KRaft 模式

从 Kafka 4.0 开始,将不再支持 ZooKeeper 模式。operator 也将在未来版本中移除对 ZooKeeper 模式的支持。建议尽快将您的 Kafka 实例迁移到 KRaft 模式。

迁移注意事项
  • 服务中断:迁移过程中可能会导致短暂的服务中断。
  • 连接变更:迁移后,pod 名称和服务(svc)名称将发生变化,可能导致连接地址发生变化。迁移完成后务必及时更新实例的访问地址。如果您通过 bootstrap 或 external-bootstrap 服务连接 Kafka 实例,访问地址将保持不变,无需更新。
  • 不可回滚:一旦迁移到 KRaft,无法回滚到 ZooKeeper 模式。

前提条件

  • Kafka 版本必须为 3.8 或更高
  • 通知消费者/生产者可能出现的临时中断
  • 确保 Kafka 集群健康且完全可用

迁移步骤

CLI
  1. 通过 patch 命令将 Kafka 实例切换到 KRaft 模式:
    kubectl patch rdsKafka <name> -n <namespace> --type=merge -p '{"spec":{"mode":"KRaft"}}'
  2. 监控迁移状态:
    kubectl get rdsKafka <name> -n <namespace> -o jsonpath='{.status.phase}'
    状态将依次为:
    • Migrating:迁移中
    • Active:迁移成功完成

迁移后步骤

迁移注意事项

如果您的应用未使用 bootstrapexternal-bootstrap 服务(例如,无论是内部访问还是外部访问,均使用与 <name>-kafka-<i>.<namespace>.svc.cluster.local 关联的 IP 和端口),则必须更新其连接配置。

  1. 验证客户端连接和数据完整性

    • 确认所有生产者和消费者应用能够成功连接 Kafka 集群(检查日志中是否有连接错误、超时或认证问题)。
    • 进行测试生产/消费:通过生产者发送测试消息,确认消费者能够接收且无数据丢失或损坏。
    • 验证核心业务主题是否可访问且保留了迁移前的所有数据。
  2. 监控性能

    • 关注 controller 性能
    • 监控分区处理和元数据操作