27.9. 使用注解启动 Kafka 和其他操作对象的滚动更新


AMQ Streams 支持使用注解通过 Cluster Operator 手动触发 Kafka 和其他操作对象的滚动更新。使用注解来启动 Kafka、Kafka Connect、MirrorMaker 2 和 ZooKeeper 集群的滚动更新。

在特殊情况下,通常只需要手动对特定 pod 或一组 pod 执行滚动更新。但是,如果您通过 Cluster Operator 执行滚动更新,您可以确保以下内容,而不是直接删除 pod:

  • 手动删除 pod 不会与 Cluster Operator 操作冲突,如同时删除其他 pod。
  • Cluster Operator 逻辑处理 Kafka 配置规格,如 in-sync 副本的数量。

27.9.1. 使用 pod 管理注解执行滚动更新

此流程描述了如何触发 Kafka、Kafka Connect、MirrorMaker 2 或 ZooKeeper 集群的滚动更新。要触发更新,您可以在管理集群中运行的 pod 的 StrimziPodSet 中添加注解。

先决条件

要执行手动滚动更新,您需要一个正在运行的 Cluster Operator。您更新的组件的集群(无论是 Kafka、Kafka Connect、MirrorMaker 2 或 ZooKeeper)也必须正在运行。

流程

  1. 查找控制您要手动更新的 pod 的资源名称。

    例如,如果您的 Kafka 集群名为 my-cluster,则对应的名称为 my-cluster-kafkamy-cluster-zookeeper。对于名为 my-connect-cluster 的 Kafka Connect 集群,对应的名称为 my-connect-cluster-connect。对于名为 my-mm2-cluster 的 MirrorMaker 2 集群,对应的名称为 my-mm2-cluster-mirrormaker2

  2. 使用 oc annotate 注解 OpenShift 中的相应资源。

    Annotating a StrimziPodSet

    oc annotate strimzipodset <cluster_name>-kafka strimzi.io/manual-rolling-update=true
    
    oc annotate strimzipodset <cluster_name>-zookeeper strimzi.io/manual-rolling-update=true
    
    oc annotate strimzipodset <cluster_name>-connect strimzi.io/manual-rolling-update=true
    
    oc annotate strimzipodset <cluster_name>-mirrormaker2 strimzi.io/manual-rolling-update=true
    Copy to Clipboard Toggle word wrap

  3. 等待下一个协调发生(默认为两分钟)。只要协调过程检测到注解,就会触发被注解资源中的所有 pod 的滚动更新。当所有 pod 的滚动更新完成后,注解会自动从资源中删除。

27.9.2. 使用 pod 注解执行滚动更新

此流程描述了如何使用 OpenShift Pod 注解手动触发现有 Kafka、Kafka Connect、MirrorMaker 2 或 ZooKeeper 集群的滚动更新。注解多个 pod 时,会在同一协调运行中执行连续的滚动更新。

先决条件

要执行手动滚动更新,您需要一个正在运行的 Cluster Operator。您更新的组件的集群(无论是 Kafka、Kafka Connect、MirrorMaker 2 或 ZooKeeper)也必须正在运行。

您可以在 Kafka 集群上执行滚动更新,无论所使用的主题复制因素是什么。但是,要让 Kafka 在更新过程中正常工作,您需要以下内容:

  • 使用您要更新的节点运行高可用性 Kafka 集群部署。
  • 为高可用性复制的主题。

    主题配置指定至少 3 个复制因素,最小同步副本的数量为复制因素的数量减 1。

    为高可用性复制 Kafka 主题

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaTopic
    metadata:
      name: my-topic
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      partitions: 1
      replicas: 3
      config:
        # ...
        min.insync.replicas: 2
        # ...
    Copy to Clipboard Toggle word wrap

流程

  1. 查找您要手动更新的 Pod 的名称。

    Pod 命名惯例如下:

    • <cluster_name>-kafka-<index_number> 用于 Kafka 集群
    • <cluster_name>-zookeeper-<index_number> 用于 ZooKeeper 集群
    • <cluster_name>-connect-<index_number> 用于 Kafka Connect 集群
    • <cluster_name>-mirrormaker2-<index_number> 用于 MirrorMaker 2 集群

    分配给 pod 的 <index_number> 从零开始,并以副本总数减一 结束。

  2. 使用 oc annotate 注解 OpenShift 中的 Pod 资源:

    oc annotate pod <cluster_name>-kafka-<index_number> strimzi.io/manual-rolling-update=true
    
    oc annotate pod <cluster_name>-zookeeper-<index_number> strimzi.io/manual-rolling-update=true
    
    oc annotate pod <cluster_name>-connect-<index_number> strimzi.io/manual-rolling-update=true
    
    oc annotate pod <cluster_name>-mirrormaker2-<index_number> strimzi.io/manual-rolling-update=true
    Copy to Clipboard Toggle word wrap
  3. 等待下一个协调发生(默认为两分钟)。当在协调过程检测到注解时,就会触发被注解的 Pod 的滚动更新。当 Pod 的滚动更新完成后,注解会自动从 Pod 中删除。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat