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.topicNamestatus.topicName 不匹配。
  • 使用 spec.partitions ( Kafka 不支持)减少分区数量。
  • 修改 spec.replicas 中指定的副本数量。
警告

增加带有键的主题的 spec.partitions 将更改记录分区,这可能会导致问题,特别是在主题使用语义分区时。

先决条件

  • 正在运行的 Kafka 集群使用 mTLS 身份验证和 TLS 加密配置 Kafka 代理监听程序。
  • 正在运行的主题 Operator (通常使用 Entity Operator 部署)。
  • 要删除主题,在 Kafka 资源的 spec.kafka.config 中的 delete.topic.enable=true (默认)。

流程

  1. 配置 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
    Copy to Clipboard Toggle word wrap

    提示

    修改主题时,您可以使用 oc get kafkatopic my-topic-1 -o yaml 获取资源的当前版本。

  2. 在 OpenShift 中创建 KafkaTopic 资源。

    oc apply -f <topic_config_file>
    Copy to Clipboard Toggle word wrap
  3. 等待主题的 ready 状态更改为 True

    oc get kafkatopics -o wide -w -n <namespace>
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

    READY 输出显示为 True 时,主题创建成功。

  4. 如果 READY 列留空,请从资源 YAML 或 Topic Operator 日志中获取有关状态的更多详细信息。

    状态信息提供有关当前状态原因的详细信息。

    oc get kafkatopics my-topic-2 -o yaml
    Copy to Clipboard Toggle word wrap

    有关具有 NotReady 状态的主题详情

    # ...
    status:
      conditions:
      - lastTransitionTime: "2022-06-13T10:14:43.351550Z"
        message: Number of partitions cannot be decreased
        reason: PartitionDecreaseException
        status: "True"
        type: NotReady
    Copy to Clipboard Toggle word wrap

    在本例中,主题未就绪的原因是,原始分区数量在 KafkaTopic 配置中被减少。Kafka 不支持此功能。

    重置主题配置后,状态会显示主题为 ready。

    oc get kafkatopics my-topic-2 -o wide -w -n <namespace>
    Copy to Clipboard Toggle word wrap

    主题的状态更新

    NAME         CLUSTER     PARTITIONS  REPLICATION FACTOR READY
    my-topic-2   my-cluster  10          3                  True
    Copy to Clipboard Toggle word wrap

    获取详情不会显示任何信息

    oc get kafkatopics my-topic-2 -o yaml
    Copy to Clipboard Toggle word wrap

    带有 READY 状态的主题详情

    # ...
    status:
      conditions:
      - lastTransitionTime: '2022-06-13T10:15:03.761084Z'
        status: 'True'
        type: Ready
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat