10.9. 在主题 Operator 模式间切换


在升级或降级 Apache Kafka 的 Streams 时,或者在使用同一版本的 Apache Kafka 时切换主题管理模式,只要该版本支持模式。

从双向切换到单向主题管理模式

  1. 启用 UnidirectionalTopicOperator 功能门

    Cluster Operator 以单向主题管理模式使用主题 Operator 部署实体 Operator。

  2. 支持以双向主题管理模式运行的 Topic Operator 的内部主题不再需要,以便您可以删除 KafkaTopic 资源来管理它们:

    oc delete $(oc get kt -n <namespace_name> -o name | grep strimzi-store-topic) \
      && oc delete $(oc get kt -n <namespace_name> -o name | grep strimzi-topic-operator)
    Copy to Clipboard Toggle word wrap

    此命令删除内部主题,其名称为启动 strimzi-store-topicstrimzi-topic-operator

  3. 存储消费者偏移和事务状态的内部主题必须保留在 Kafka 中。因此,您必须先停用主题 Operator 管理,然后才能删除 KafkaTopic 资源。

    1. 停用对主题的管理:

      oc annotate $(oc get kt -n <namespace_name> -o name | grep consumer-offsets) strimzi.io/managed="false" \
        && oc annotate $(oc get kt -n <namespace_name> -o name | grep transaction-state) strimzi.io/managed="false"
      Copy to Clipboard Toggle word wrap

      通过使用 strimzi.io/managed="false" 注解 KafkaTopic 资源,这表示 Topic Operator 不再管理这些主题。在本例中,我们将注释添加到用于管理内部主题的资源,其名称为启动 consumer-offsetstransaction-state

    2. 当其管理停用时,删除 KafkaTopic 资源(不会删除 Kafka 中的主题):

      oc delete $(oc get kt -n <namespace_name> -o name | grep consumer-offsets) \
        && oc delete $(oc get kt -n <namespace_name> -o name | grep transaction-state)
      Copy to Clipboard Toggle word wrap

从单向切换到双向主题管理模式

  1. 禁用 UnidirectionalTopicOperator 功能门

    Cluster Operator 以双向主题管理模式部署带有主题 Operator 的 Entity Operator。

    以双向主题管理模式运行的 Topic Operator 所需的内部主题会被创建。

  2. 检查是否使用终结器来控制删除主题。如果 KafkaTopic 资源使用终结器,请确保在进行交换机后执行以下操作之一:

    • 从主题中删除所有终结器
    • 通过在 Topic Operator env 配置中将 STRIMZI_USE_FINALIZERS 环境变量设置为 false 来禁用终结器。

      对在 Apache Kafka 管理的集群的 Streams 中运行的主题 Operator 或独立部署使用相同的配置。

      在 Apache Kafka 管理的集群的流中禁用主题终结器

      apiVersion: kafka.strimzi.io/v1beta2
      kind: Kafka
      metadata:
        name: my-cluster
      spec:
        # ...
        entityOperator:
          topicOperator: {}
          userOperator: {}
          template:
            topicOperatorContainer:
              env:
                - name: STRIMZI_USE_FINALIZERS
                  value: "false"
      # ...
      Copy to Clipboard Toggle word wrap

      在独立部署中禁用主题终结器

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: strimzi-topic-operator
      spec:
        template:
          spec:
            containers:
              - name: STRIMZI_USE_FINALIZERS
                value: "false"
      # ...
      Copy to Clipboard Toggle word wrap

      主题 Operator 在双向模式中不使用终结器。如果在从单向模式进行切换后保留它们,您将无法删除 KafkaTopic 和相关资源。

在主题 Operator 模式间切换后,尝试创建主题以确保 Operator 正确运行。如需更多信息,请参阅 第 10.4 节 “配置 Kafka 主题”

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat