![](/img/trans.png)
[英]Unable to produce/consume to Kafka on Kubernetes when using loadBalancer Service
[英]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"
public-ip:port
? 或者使用kafka-<pod-id>.kafka.my.company.com:port
?. 還有哪個端口在這里使用? port
或targetPort
? 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.