簡體   English   中英

使用LoadBalancer服務在Kubernetes中公開Kafka集群

[英]Exposing Kafka cluster in Kubernetes using LoadBalancer service

假設我有3個節點Kafka群集設置。 那么如何使用Load Balancer服務將其暴露在雲外? 我已閱讀參考資料,但有一些疑問。

比如說下面是經紀人的服務

apiVersion: v1 
  kind: Service metadata: 
  name: kafka-0 
  annotations: dns.alpha.kubernetes.io/external: kafka-0.kafka.my.company.com 
  spec: 
    externalTrafficPolicy: Local 
    type: LoadBalancer 
    ports: 
      - port: 9092 
      name: outside 
      targetPort: 9092 
    selector: app: kafka kafka-pod-id: "0"
  1. 什么是port和targetPort?
  2. 我是否為每個經紀人設置了LoadBalancer服務?
  3. 這些多個代理是否映射到雲LB的單個公共IP地址?
  4. k8s / cloud之外的服務如何訪問個人經紀人? 通過使用public-ip:port 或者使用kafka-<pod-id>.kafka.my.company.com:port ?. 還有哪個端口在這里使用? porttargetPort
  5. 如何在Kafka代理的Advertised.listeners屬性中指定此配置? 因為k8s集群內部和外部的服務端口可能不同。

請幫忙。

根據您提供的信息,我會嘗試給您一些答案,最后給出一些建議。

1) port:是使服務對同一K8s集群中運行的其他服務可見的端口號。 換句話說,如果服務想要調用在同一Kubernetes集群中運行的另一個服務,它將能夠使用服務規范文件中針對port指定的port來執行此操作。

targetPort:POD上運行服務的端口。 您的應用程序需要偵聽此端口上的網絡請求以使服務正常工作。

2/3)每個代理都應作為LoadBalancer公開,並配置為內部通信的無頭服務。 應該有一個帶外部IP的附加LoadBalancer用於外部連接。

服務示例

apiVersion: v1
kind: Service
metadata:
  name: kafka-0
  annotations: dns.alpha.kubernetes.io/external: kafka-0.kafka.my.company.com
spec:
  ports:
  - port: 9092
    name: kafka-port
    protocol: TCP
  selector:
    pod-name: kafka-0
  type: LoadBalancer

4)你必須使用kafka-<pod-id>.kafka.my.company.com:port

5)應將其設置為外部地址,以便客戶端可以連接到它。 文章可能幫助理解。

類似的案例在Github上,也可能對你有幫助 - https://github.com/kow3ns/kubernetes-kafka/issues/3

此外,您還可以考慮Ingress - https://tothepoint.group/blog/accessing-kafka-on-google-kubernetes-engine-from-the-outside-world/

暫無
暫無

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

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