9.4. 配置 Kafka 主题
使用 KafkaTopic 资源的属性来配置 Kafka 主题。对 KafkaTopic 中主题配置所做的更改会被传播到 Kafka。
您可以使用 oc apply 创建或修改主题,oc delete 删除现有的主题。
例如:
-
oc apply -f <topic_config_file> -
oc delete KafkaTopic <topic_name>
要能够删除主题,必须在 Kafka 资源的 spec.kafka.config 中将 delete.topic.enable 设置为 true (默认)。
此流程演示了如何创建包含 10 个分区和 2 个副本的主题。
该流程与主题管理的双向和(预览)单向模式相同。
开始前
KafkaTopic 资源不允许以下更改:
-
重命名
spec.topicName中定义的主题。将检测到spec.topicName和status.topicName不匹配。 -
使用
spec.partitions( Kafka 不支持)减少分区数量。 -
修改
spec.replicas中指定的副本数量。
增加带有键的主题的 spec.partitions 将更改记录分区,这可能会导致问题,特别是在主题使用语义分区时。
先决条件
- 正在运行的 Kafka 集群使用 mTLS 身份验证和 TLS 加密配置 Kafka 代理监听程序。
- 正在运行的主题 Operator (通常使用 Entity Operator 部署)。
-
要删除主题,
delete.topic.enable=true(默认)在Kafka资源的spec.kafka.config中。
流程
配置
KafkaTopic资源。Kafka 主题配置示例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: my-topic-1 labels: strimzi.io/cluster: my-cluster spec: partitions: 10 replicas: 2提示修改主题时,您可以使用
oc get kafkatopic my-topic-1 -o yaml获取资源的当前版本。在 OpenShift 中创建
KafkaTopic资源。oc apply -f <topic_config_file>等待主题的就绪状态更改为
True:oc get kafkatopics -o wide -w -n <namespace>Kafka 主题状态
NAME CLUSTER PARTITIONS REPLICATION FACTOR READY my-topic-1 my-cluster 10 3 True my-topic-2 my-cluster 10 3 my-topic-3 my-cluster 10 3 True当
READY输出显示为True时,主题创建成功。如果
READY列留空,请从资源 YAML 或 Topic Operator 日志中获取有关状态的更多详细信息。状态信息提供有关当前状态原因的详细信息。
oc get kafkatopics my-topic-2 -o yaml有关具有
NotReady状态的主题详情# ... status: conditions: - lastTransitionTime: "2022-06-13T10:14:43.351550Z" message: Number of partitions cannot be decreased reason: PartitionDecreaseException status: "True" type: NotReady在本例中,主题未就绪的原因是,原始分区数量在
KafkaTopic配置中被减少。Kafka 不支持此功能。重置主题配置后,status 会显示主题已就绪。
oc get kafkatopics my-topic-2 -o wide -w -n <namespace>主题的状态更新
NAME CLUSTER PARTITIONS REPLICATION FACTOR READY my-topic-2 my-cluster 10 3 True获取详情不显示任何信息
oc get kafkatopics my-topic-2 -o yaml有关具有
READY状态的主题详情# ... status: conditions: - lastTransitionTime: '2022-06-13T10:15:03.761084Z' status: 'True' type: Ready