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 部署)。
-
要删除主题,在
Kafka资源的spec.kafka.config中的delete.topic.enable=true(默认)。
流程
配置
KafkaTopic资源。Kafka 主题配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示修改主题时,您可以使用
oc get kafkatopic my-topic-1 -o yaml获取资源的当前版本。在 OpenShift 中创建
KafkaTopic资源。oc apply -f <topic_config_file>
oc apply -f <topic_config_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待主题的 ready 状态更改为
True:oc get kafkatopics -o wide -w -n <namespace>
oc get kafkatopics -o wide -w -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当
READY输出显示为True时,主题创建成功。如果
READY列留空,请从资源 YAML 或 Topic Operator 日志中获取有关状态的更多详细信息。状态信息提供有关当前状态原因的详细信息。
oc get kafkatopics my-topic-2 -o yaml
oc get kafkatopics my-topic-2 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关具有
NotReady状态的主题详情Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,主题未就绪的原因是,原始分区数量在
KafkaTopic配置中被减少。Kafka 不支持此功能。重置主题配置后,状态会显示主题为 ready。
oc get kafkatopics my-topic-2 -o wide -w -n <namespace>
oc get kafkatopics my-topic-2 -o wide -w -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 主题的状态更新
NAME CLUSTER PARTITIONS REPLICATION FACTOR READY my-topic-2 my-cluster 10 3 True
NAME CLUSTER PARTITIONS REPLICATION FACTOR READY my-topic-2 my-cluster 10 3 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 获取详情不会显示任何信息
oc get kafkatopics my-topic-2 -o yaml
oc get kafkatopics my-topic-2 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 带有
READY状态的主题详情Copy to Clipboard Copied! Toggle word wrap Toggle overflow