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

    注解 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 的滚动更新时,该注解会从资源中移除。

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
        # ...
    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 中删除。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat