当前位置:  开发笔记 > 运维 > 正文

Kuberne在Kubernetes集群中 - 如何发布/使用来自Kubernetes集群外部的消息

如何解决《Kuberne在Kubernetes集群中-如何发布/使用来自Kubernetes集群外部的消息》经验,为你挑选了2个好方法。

我在AWS上从k8s群集外部访问kafka时遇到了同样的问题.我设法通过使用版本0.10.2支持多个接口的kafka侦听器功能来解决此问题.

这是我如何配置kafka容器.

    ports:
    - containerPort: 9092
    - containerPort: 9093
    env:
    - name: KAFKA_ZOOKEEPER_CONNECT
      value: "zookeeper:2181"
    - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
      value: "INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT"
    - name: KAFKA_ADVERTISED_LISTENERS
      value: "INTERNAL_PLAINTEXT://kafka-internal-service:9092,EXTERNAL_PLAINTEXT://123.us-east-2.elb.amazonaws.com:9093"
    - name: KAFKA_LISTENERS
      value: "INTERNAL_PLAINTEXT://0.0.0.0:9092,EXTERNAL_PLAINTEXT://0.0.0.0:9093"
    - name: KAFKA_INTER_BROKER_LISTENER_NAME
      value: "INTERNAL_PLAINTEXT"

除此之外,我配置了两个服务.一个用于内部(无头)和一个用于外部(LoadBalancer)通信.

希望这会节省人们的时间.



1> 小智..:

我在AWS上从k8s群集外部访问kafka时遇到了同样的问题.我设法通过使用版本0.10.2支持多个接口的kafka侦听器功能来解决此问题.

这是我如何配置kafka容器.

    ports:
    - containerPort: 9092
    - containerPort: 9093
    env:
    - name: KAFKA_ZOOKEEPER_CONNECT
      value: "zookeeper:2181"
    - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
      value: "INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT"
    - name: KAFKA_ADVERTISED_LISTENERS
      value: "INTERNAL_PLAINTEXT://kafka-internal-service:9092,EXTERNAL_PLAINTEXT://123.us-east-2.elb.amazonaws.com:9093"
    - name: KAFKA_LISTENERS
      value: "INTERNAL_PLAINTEXT://0.0.0.0:9092,EXTERNAL_PLAINTEXT://0.0.0.0:9093"
    - name: KAFKA_INTER_BROKER_LISTENER_NAME
      value: "INTERNAL_PLAINTEXT"

除此之外,我配置了两个服务.一个用于内部(无头)和一个用于外部(LoadBalancer)通信.

希望这会节省人们的时间.


嗨,我想跟随你的解决方案,因为我有同样的问题和类似的设置.你能进一步解释,我不知道你是如何实现的.

2> Manish Sinha..:

通过进行以下更改,我能够解决我的问题 -

    在YML中使用NodeSelector使kafka pod在kube集群的特定节点上运行.

    设置KAFKA_ADVERTISED_HOST_NAME为Kube hostName,此Kafka POD已配置为运行(如步骤1中所配置)

    使用NodePort公开Kafka服务并设置与暴露的NodePort相同的POD端口,如下所示 -

    spec:
      ports:
        - name: broker-2
          port: **30031**
          targetPort: 9092
          nodePort: **30031**
          protocol: TCP
      selector:
        app: kafka-2
        broker_id: "2"
      type: NodePort
    

现在,您可以使用host:exposedPort从kube集群外部访问Kafka代理

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有