簡體   English   中英

訪問k8 minikube集群外的kafka經紀人

[英]Access kafka broker outside k8 minikube cluster

我在我的mac上的minikube k8群集上的Pod上運行了一個landoop kafka圖像。 我有2個不同的服務來公開模式注冊表的端口8081和代理的9092。 我已經在我的NodePort服務中映射了端口8081 - > 30081和9092 - > 30092,以便我可以從群集外部訪問它。 但是當我嘗試運行控制台消費者或我的消費者應用程序時,Kafka從不消費消息。 要驗證代理9092端口是否可在k8集群外部訪問:

nc <exposed-ip> 30092, it says the port is open.

要驗證Schema注冊表8081是否可訪問:

curl -X GET http://192.168.99.100:30081/subjects

它返回可用的模式。

我有幾個問題。 1)我們不能以k8集群之外的上述方式從k8集群中訪問Kafka嗎?如果是這樣,我在某種程度上做錯了嗎? 2)如果端口是開放的,這是不是意味着經紀人可用?

任何幫助表示贊賞。謝謝

如果您無法直接從外部路由到容器,則從容器網絡外部訪問Kafka群集相當復雜。

首次連接到Kafka群集時,您將連接到單個代理,並且代理會返回Kafka群集內所有代理和分區的列表。 然后,Kafka客戶端使用該列表與特定主題所在的代理進行交互。

問題是代理列表默認包含Kafka代理的內部IP。 在你的情況下,容器網絡ip。 您可以通過在每個代理的配置中設置advertised.listeners來覆蓋此值。

要從Kubernetes外部創建Kafka集群,您需要為每個代理配置nodeport服務,並將每個代理的advertised.listeners設置設置為相應nodeport服務的外部ip。 但請注意,當您嘗試在Kubernetes集群中使用Kafka時,這會增加額外的延遲和故障點。

您需要為Kafka設置廣告的偵聽器。 對於landoop docker圖像,可以通過環境標志設置

-e ADV_HOST=192.168.99.100

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM