20.4. 手动启动 Kafka 和 ZooKeeper 集群的滚动更新


AMQ Streams 支持使用资源上的注解来通过 Cluster Operator 手动触发 Kafka 和 ZooKeeper 集群的滚动更新。滚动更新使用新的资源重启 pod。

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

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

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

此流程描述了如何触发 Kafka 集群或 ZooKeeper 集群的滚动更新。

要触发更新,您需要向用来管理集群中运行的 pod 的资源添加注解。您可以注解 StatefulSetStrimziPodSet 资源(如果您启用了 UseStrimziPodSets 功能门)。

先决条件

要执行手动滚动更新,您需要运行一个正在运行的 Cluster Operator 和 Kafka 集群。

流程

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

    例如,如果您的 Kafka 集群命名为 my-cluster,则对应的名称为 my-cluster-kafkamy-cluster-zookeeper

  2. 使用 oc annotate 在 OpenShift 中注解适当的资源。

    注解 StatefulSet

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

    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
    Copy to Clipboard Toggle word wrap

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

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

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

先决条件

要执行手动滚动更新,您需要运行一个正在运行的 Cluster Operator 和 Kafka 集群。

无论使用了什么主题复制因素,您可以在 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. 找到您要手动更新的 Kafka 或 ZooKeeper Pod 的名称。

    例如,如果您的 Kafka 集群命名为 my-cluster,则对应的 Pod 名称为 my-cluster-kafka-indexmy-cluster-zookeeper-index索引 从零开始,结束于副本总数。

  2. 在 OpenShift 中注解 Pod 资源。

    使用 oc annotate

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat