10.6. 管理 KafkaTopic 资源,而不影响 Kafka 主题
此流程描述了如何当前通过 KafkaTopic
资源管理的 Kafka 主题转换为非管理的主题。此功能在各种情况下非常有用。例如,您可能想要更新 KafkaTopic
资源的 metadata.name
。您只能通过删除原始 KafkaTopic
资源并重新创建新资源来完成此操作。
通过使用 strimzi.io/managed=false
注解 KafkaTopic
资源,这表示 Topic Operator 应该不再管理该特定主题。这可让您在更改资源的配置或其他管理任务时保留 Kafka 主题。
如果您使用无方向性的主题管理,您可以执行此任务。
流程
在 OpenShift 中注解
KafkaTopic
资源,将strimzi.io/managed
设置为false
:oc annotate kafkatopic my-topic-1 strimzi.io/managed="false"
在
KafkaTopic
资源中指定主题的metadata.name
,本例中为my-topic-1
。检查
KafkaTopic
资源的状态,以确保请求成功:oc get kafkatopics my-topic-1 -o yaml
具有
Ready
状态的主题示例apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: generation: 124 name: my-topic-1 finalizer: strimzi.io/topic-operator labels: strimzi.io/cluster: my-cluster spec: partitions: 10 replicas: 2 # ... status: observedGeneration: 124 1 topicName: my-topic-1 conditions: - type: Ready status: True lastTransitionTime: 20230301T103000Z
- 1
- 资源成功协调意味着主题不再管理。
metadata.generation
(部署的当前版本)的值必须与 status.observedGeneration (资源的最新协调)匹配
。现在,您可以在不影响管理的 Kafka 主题的情况下更改
KafkaTopic
资源。例如,要更改
metadata.name
,请执行以下操作:删除原始
KafkTopic
资源:oc delete kafkatopic <kafka_topic_name>
-
重新创建具有不同
metadata.name
的KafkTopic
资源,但使用spec.topicName
来引用由原始管理的相同主题
-
如果您没有删除原始
KafkaTopic
资源,并且您希望再次恢复管理 Kafka 主题,请将strimzi.io/managed
注解设置为true
或删除注解。