当前位置: 首页 > 知识库问答 >
问题:

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

孔礼骞
2023-03-14
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. 这些多个代理是否映射到cloud LB的单个公共IP地址?
  4. K8S/Cloud之外的服务如何访问单个代理?通过使用public-ip:port?或者使用kafka- .kafka.my.company.com:port ?。还有,这里用的是哪个端口?端口还是目标端口
  5. 如何在Kafka Broker的adveredsed.listeners属性中指定此配置?对于k8s集群内部和外部的服务,As端口可能不同。

请帮忙。

共有1个答案

商正浩
2023-03-14

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

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

targetport:是运行服务的pod上的端口。您的应用程序需要侦听此端口上的网络请求,以便服务工作。

服务实例

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- .kafka.my.company.com:port

5)应该将它设置为外部地址,以便客户端可以连接到它。本文可能有助于理解。

 类似资料:
  • 我使用几个独立服务运行Kubernetes单节点dev集群--Nginx proxy(端口80)和elasticsearch(端口9200)。有没有办法用ingress公开这些服务,用一个LoadBalancer IP拥有入口点?(X.X.X.X:80和X.X.X:9200) 我读过关于入口限制,它只能用80和443端口访问。但是,也许,存在一些变通方法? 请Thx提供任何建议 但如果以后您想公开

  • 我试图更多地了解服务在Kubernetes中是如何工作的。以这个示例yaml文件为例。 另外,如果我必须从k8集群中的另一个吊舱B访问吊舱landoopkafka的端口8081,我如何访问它? 太感谢你了。

  • 我到处都读过,要设置Https来访问kubernetes集群,您需要有入口,而不仅仅是一个负载平衡器服务,它还将集群暴露在外部。 我的问题是非常理论化的:如果入口(确实是)由负载平衡器服务、控制器(例如nginx映像的部署/pod)和一组规则(为了正确代理集群内的传入请求)组成,为什么我们不能在负载平衡器前设置Https而不是入口? 作为练习的标题,我自己分别构建了这三个组件(一个负载平衡器、一个

  • 我是Kubernetes的新手,想了解如何向外部世界公开在Kubernetes中运行的服务。我已经使用集群上的节点端口公开了它。例如:一个服务在主机上公开端口31234,我可以通过https://kubeserverip:31234从另一个服务器访问该服务。