このドキュメントを使用して、Knative で Kafka チャネル ディスパッチャをセットアップしようとしています: https://github.com/knative/eventing/tree/master/contrib/kafka/config
チャネル ディスパッチャーが Kafka ブローカーを見つけられないことを除けば、すべてうまくいきました。ポッドからのエラーkafka-channel-dispatcher-0
:
{"level":"fatal","ts":1554634078.4035408,"caller":"dispatcher/main.go:65","msg":"kafka ディスパッチャを作成できません。","エラー":"作成できませんkafka client: kafka: client has run out of available brokers to talk (Is your cluster reachable?)","stacktrace":"main.main\n\t/home/michiel/go/src/github.com/knative /eventing/contrib/kafka/cmd/dispatcher/main.go:65\nruntime.main\n\t/usr/lib/go-1.10/src/runtime/proc.go:198"}
K8s クラスターとは別のマシンで単一の Kafka ノードを実行していますが、それらは同じネットワーク内にあります。Knative を使用せずに Python でコンテナーを実行して Kafka ブローカーに到達しようとしましたが、成功したので、ブローカーに到達できることがわかりました。
Kafka チャネル ディスパッチャーの構成マップは次のとおりです。
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-channel-controller-config
namespace: knative-eventing
data:
# Broker URL's for the provisioner. Replace this with the URL's for your kafka cluster.
bootstrap_servers: 10.142.15.232:9092
# Consumer mode to dispatch events from different partitions in parallel.
# By default(multiplex), partitions are multiplexed with a single go channel.
# `multiplex` and `partitions` are valid values.
## consumer_mode: partitions
ブローカーに連絡するにはどうすればよいですか? ドキュメントの例のように、URLの代わりにIPアドレスを提供しているという事実と何か関係があるのでしょうか:
# Broker URL's for the provisioner
bootstrap_servers: my-cluster-kafka-bootstrap.my-kafka-namespace:9092
更新: ドキュメントのように strimzi kafka クラスターに到達できます。