10.8. 删除受管主题
主题 Operator 支持通过 KafkaTopic 资源删除通过 OpenShift 终结器管理的主题。这由 STRIMZI_USE_FINALIZERS Topic Operator 环境变量决定。默认情况下,这被设置为 true,但如果您不想 主题 Operator 来添加终结器,则可以在主题 Operator env 配置中将其设置为 false。
终结器(finalizers)可确保按顺序控制地删除 KafkaTopic 资源。Topic Operator 的终结器添加到 KafkaTopic 资源的元数据中:
控制删除主题的终结器
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
generation: 1
name: my-topic-1
finalizers:
- strimzi.io/topic-operator
labels:
strimzi.io/cluster: my-cluster
在本例中,为主题 my-topic-1 添加了终结器。finalizer 会阻止主题被完全删除,直到最终化过程完成为止。如果使用 oc delete kafkatopic my-topic-1 删除主题,则会在元数据中添加时间戳:
删除时的终结器时间戳
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
generation: 1
name: my-topic-1
finalizers:
- strimzi.io/topic-operator
labels:
strimzi.io/cluster: my-cluster
deletionTimestamp: 20230301T000000.000
资源仍然存在。如果删除失败,则会在资源的状态中显示。
当成功执行最终任务时,终结器会从元数据中删除,并且资源会被完全删除。
终结器还可用于防止相关资源被删除。如果主题 Operator 没有运行,它无法从 metadata.finalizers 中删除其终结器。并且任何尝试直接删除 KafkaTopic 资源,或者命名空间将失败或超时,使命名空间处于卡住终止状态。如果发生这种情况,您可以通过删除 主题上的终结器 来绕过最终化过程。