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


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

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

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

11.4.1. 先决条件

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

有关运行的信息 ,请参阅 OpenShift 中的部署和升级 AMQ Streams 指南:

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

这个步骤描述了如何触发 Kafka 集群的滚动更新或 ZooKeeper 集群。

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

流程

  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

    注解 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

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

11.4.3. 使用 Pod 注解执行滚动更新

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

先决条件

您可以在 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
        # ...

流程

  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
  3. 等待下一次协调发生(默认为两分钟)。当在协调过程检测到注解时,就会触发被注解的 Pod 的滚动更新。完成容器集的滚动更新后,该注解会从 Pod 中删除。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部