10.9. 在主题 Operator 模式间切换
在升级或降级 Apache Kafka 的 Streams 时,或者在使用同一版本的 Apache Kafka 时切换主题管理模式,只要该版本支持模式。
从双向切换到单向主题管理模式
启用
UnidirectionalTopicOperator
功能门。Cluster Operator 以单向主题管理模式使用主题 Operator 部署实体 Operator。
支持以双向主题管理模式运行的 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)
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 Copied! Toggle word wrap Toggle overflow 此命令删除内部主题,其名称为启动
strimzi-store-topic
和strimzi-topic-operator
。存储消费者偏移和事务状态的内部主题必须保留在 Kafka 中。因此,您必须先停用主题 Operator 管理,然后才能删除
KafkaTopic
资源。停用对主题的管理:
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"
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 Copied! Toggle word wrap Toggle overflow 通过使用
strimzi.io/managed="false"
注解KafkaTopic
资源,这表示 Topic Operator 不再管理这些主题。在本例中,我们将注释添加到用于管理内部主题的资源,其名称为启动consumer-offsets
和transaction-state
。当其管理停用时,删除
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)
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 Copied! Toggle word wrap Toggle overflow
从单向切换到双向主题管理模式
禁用
UnidirectionalTopicOperator
功能门。Cluster Operator 以双向主题管理模式部署带有主题 Operator 的 Entity Operator。
以双向主题管理模式运行的 Topic Operator 所需的内部主题会被创建。
检查是否使用终结器来控制删除主题。如果
KafkaTopic
资源使用终结器,请确保在进行交换机后执行以下操作之一:- 从主题中删除所有终结器。
通过在 Topic Operator
env
配置中将STRIMZI_USE_FINALIZERS
环境变量设置为false
来禁用终结器。对在 Apache Kafka 管理的集群的 Streams 中运行的主题 Operator 或独立部署使用相同的配置。
在 Apache Kafka 管理的集群的流中禁用主题终结器
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在独立部署中禁用主题终结器
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 主题 Operator 在双向模式中不使用终结器。如果在从单向模式进行切换后保留它们,您将无法删除
KafkaTopic
和相关资源。
在主题 Operator 模式间切换后,尝试创建主题以确保 Operator 正确运行。如需更多信息,请参阅 第 10.4 节 “配置 Kafka 主题”。