gpt4 book ai didi

kubernetes - 使用 LoadBalancer 服务在 Kubernetes 中公开 Kafka 集群

转载 作者:行者123 更新时间:2023-12-05 07:24:31 32 4
gpt4 key购买 nike

假设我有 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. 什么是端口和目标端口?
  2. 我是否为每个代理设置 LoadBalancer 服务?
  3. 这些多个代理是否映射到云 LB 的单个公共(public) IP 地址?
  4. k8s/cloud 之外的服务如何访问个人代理?通过使用 public-ip:port ?或使用 kafka-<pod-id>.kafka.my.company.com:port ?。还有这里使用哪个端口? porttargetPort
  5. 如何在 Kafka 代理的 Advertised.listeners 中指定此配置?属性(property)?由于 k8s 集群内部和外部服务的端口可能不同。

请帮忙。

最佳答案

根据你提供的信息我会尽量给你一些答案,最终给出一些建议。

1) port:是使服务对同一 K8s 集群中运行的其他服务可见的端口号。换句话说,如果一个服务想要调用在同一个 Kubernetes 集群中运行的另一个服务,它将能够使用针对 port 指定的端口来实现。在服务规范文件中。

targetPort:POD 上的端口服务运行的地方。您的应用程序需要在此端口上监听网络请求,服务才能正常工作。

2/3) 每个 Broker 都应显示为 LoadBalancer并配置为内部通信的 headless 服务。应该有一个额外的 LoadBalancer使用外部 ip 进行外部连接。

服务示例

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) 它应该设置为外部地址,以便客户端可以连接到它。 This文章可能有助于理解。

类似的案例在 Github 上,它可能对你也有帮助 - https://github.com/kow3ns/kubernetes-kafka/issues/3

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

关于kubernetes - 使用 LoadBalancer 服务在 Kubernetes 中公开 Kafka 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55379205/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com