簡體   English   中英

如何從 kubernetes 集群內提供的服務訪問安裝在 kubernetes 集群外的 kafka

[英]How to access kafka installed outside kubernetes cluster from a service provisioned inside a kubernetes cluster

我的設置就像,我有一個作為 minikube 集群的一部分提供的生產者服務,它試圖將消息發布到在主機上運行的 kafka 實例。

我編寫了一個 kafka 服務和端點 yaml 如下:

kind: Service
apiVersion: v1
metadata:
  name: kafka
spec:
  ports:
    - name: "broker"
      protocol: "TCP"
      port: 9092
      targetPort:  9092
      nodePort: 0
---
kind: Endpoints
apiVersion: v1
metadata:
  name: kafka
  namespace: default
subsets:
  - addresses:
      - ip: 10.0.2.2
    ports:
      - name: "broker"
        port: 9092

端點中提到的minikube集群內部主機的ip地址通過以下命令獲取:

minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print \$2 }'"

我面臨的問題是,當生產者第一次嘗試發布消息但沒有消息寫入該主題時,正在創建主題。

挖掘 pod 日志,我發現生產者正在嘗試連接到本地主機上的 kafka 實例或其他東西(不太確定)。

2020-05-17T19:09:43.021Z [warn] org.apache.kafka.clients.NetworkClient [] - 
[Producer clientId=/system/sharding/kafkaProducer-greetings/singleton/singleton/producer] 
Connection to node 0 (omkara/127.0.1.1:9092) could not be established. Broker may not be available.

之后我懷疑可能需要通過以下更改來修改server.properties

listeners=PLAINTEXT://localhost:9092

然而,這導致日志中 ip 地址發生變化:

2020-05-17T19:09:43.021Z [warn] org.apache.kafka.clients.NetworkClient [] - 
[Producer clientId=/system/sharding/kafkaProducer-greetings/singleton/singleton/producer] 
Connection to node 0 (omkara/127.0.0.1:9092) could not be established. Broker may not be available.

我不確定這里必須提到什么 ip 地址? 或者什么是替代解決方案? 如果甚至可以從 kubernetes 集群內部連接到安裝在 kubernetes 集群外部的 kafka 實例。

由於生產者 kafka 客戶端與代理在同一個網絡上,我們需要配置一個額外的偵聽器,如下所示:

listeners=INTERNAL://0.0.0.0:9093,EXTERNAL://0.0.0.0:9092
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
advertised.listeners=INTERNAL://localhost:9093,EXTERNAL://10.0.2.2:9092
inter.broker.listener.name=INTERNAL

我們可以像這樣驗證主題中的消息:

kafka-console-consumer.sh --bootstrap-server INTERNAL://0.0.0.0:9093 --topic greetings --from-beginning
{"name":"Alice","message":"Namastey"}

您可以在此處找到有關理解和配置 kafka 偵聽器的詳細說明。

暫無
暫無

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

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