跳到内容

Channel 类型和默认设置

Knative 使用两种类型的 Channel

  • 一个通用的 Channel 对象。
  • 各自拥有自己自定义资源定义 (CRD) 的 Channel 实现,例如 InMemoryChannel 和 KafkaChannel。KafkaChannel 支持有序消费者投递保证,它是一个每分区阻塞式消费者,在从 CloudEvent 订阅者处收到成功响应后才会投递分区的下一个消息。

自定义 Channel 实现各自拥有自己的事件投递机制,例如内存中或基于 Broker。Broker 的示例包括 KafkaBroker 和 GCP Pub/Sub Broker。

Knative 默认提供 InMemoryChannel Channel 实现。此默认实现对那些不想配置特定实现类型(如 Apache Kafka 或 NATSS Channels)的开发者很有用。

如果您想创建一个 Channel 而不指定使用哪个 Channel 实现 CRD,则可以使用通用的 Channel 对象。如果您不关心特定 Channel 实现提供的属性(如顺序和持久性),并希望使用集群管理员选择的实现,那么此方法很有用。

集群管理员可以通过编辑 knative-eventing 命名空间中的 default-ch-webhook ConfigMap 来修改默认 Channel 实现设置。

有关修改 ConfigMap 的更多信息,请参阅 配置 Eventing Operator 自定义资源

默认 Channels 可以为集群、集群上的命名空间或两者配置。

注意

如果为命名空间配置了默认 Channel 实现,这将覆盖集群的配置。

在以下示例中,集群默认 Channel 实现是 InMemoryChannel,而 example-namespace 的命名空间默认 Channel 实现是 KafkaChannel。

apiVersion: v1
kind: ConfigMap
metadata:
  name: default-ch-webhook
  namespace: knative-eventing
data:
  default-ch-config: |
    clusterDefault:
      apiVersion: messaging.knative.dev/v1
      kind: InMemoryChannel
    namespaceDefaults:
      example-namespace:
        apiVersion: messaging.knative.dev/v1beta1
        kind: KafkaChannel
        spec:
          numPartitions: 2
          replicationFactor: 1

注意

InMemoryChannel Channels 不得在生产环境中使用。

后续步骤

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。