【问题标题】:External access to Kafka using Strimzi使用 Strimzi 对 Kafka 的外部访问
【发布时间】:2021-12-13 12:53:00
【问题描述】:

我正在尝试按照以下指南使用 Strimzi 提供对 Kafka 的双向外部访问:Red Hat Developer - Kafka in Kubernetes

我的YAML取自Strimizi examples on GitHub,如下:

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    version: 3.0.0
    replicas: 1 #3
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
      - name: external
        port: 9094
        type: loadbalancer
        tls: false
        configuration:
          #externalTrafficPolicy: Local
          #loadBalancerSourceRanges:
          #  - 10.0.0.200/32
          brokers:
          - broker: 0
            advertisedHost: 10.0.0.200
            advertisedPort: 30123
    config:
      offsets.topic.replication.factor: 1 #3
      transaction.state.log.replication.factor: 1 #3
      transaction.state.log.min.isr: 1 #2
      log.message.format.version: "3.0"
      inter.broker.protocol.version: "3.0"
    storage:
      type: ephemeral
  zookeeper:
    replicas: 1 #3
    storage:
      type: ephemeral
  entityOperator:
    topicOperator: {}
    userOperator: {}

在运行 kubectl get services 时,我会看到以下内容:

NAME                                  TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                               AGE
kubernetes                            ClusterIP      10.96.0.1       <none>        443/TCP                               48m
my-cluster-kafka-0                    LoadBalancer   10.107.190.96   <pending>     9094:31964/TCP                        29m
my-cluster-kafka-bootstrap            ClusterIP      10.99.34.246    <none>        9091/TCP,9092/TCP,9093/TCP            43m
my-cluster-kafka-brokers              ClusterIP      None            <none>        9090/TCP,9091/TCP,9092/TCP,9093/TCP   43m
my-cluster-kafka-external-bootstrap   LoadBalancer   10.99.91.68     <pending>     9094:31442/TCP                        29m
my-cluster-zookeeper-client           ClusterIP      10.101.216.35   <none>        2181/TCP                              45m
my-cluster-zookeeper-nodes            ClusterIP      None            <none>        2181/TCP,2888/TCP,3888/TCP            45m

注意my-cluster-kafka-0my-cluster-kafka-external-bootstrap 有一个&lt;pending&gt; EXTERNAL-IP。我的 YAML 文件中缺少什么来提供对 my-cluster-kafka-0 的双向外部访问?

【问题讨论】:

标签: kubernetes networking apache-kafka infrastructure strimzi


【解决方案1】:

Strimzi 刚刚创建了 Loadbalancer 类型的 Kubernetes 服务。由您的 Kubernetes 集群来配置负载均衡器并设置 Strimzi 可以使用的外部地址。当外部地址列为pending 时,表示负载均衡器尚未(尚未)创建。在一些可能需要几分钟的公共云中,所以它可能只是等待它。但请记住,并非所有环境都支持负载均衡器=>,当它们不受支持时,您就无法真正使用它们。所以你真的需要仔细检查你的环境是否支持它们。通常,不同的云会支持负载均衡器,而一些本地或裸机环境可能不支持(但这取决于)。

我也不确定你为什么要配置广告主机和端口:

            advertisedHost: 10.0.0.200
            advertisedPort: 30123

使用负载均衡器时(假设您的环境支持它们),您通常希望使用负载均衡器地址,该地址将自动设置为广告主机/端口。除此之外,您的 YAML 看起来不错,但可能缺少负载均衡器支持。

【讨论】:

  • 感谢您在 Strimzi Jakub 上所做的工作!对于像我这样试图让事情正常工作而不必学习 K8s 的人来说,这是一个真正的救星 :)。明白了,那我需要查看 MiniKube 文档。我添加广告主机和广告端口是最后一次尝试让某些东西正常工作。
  • 对于同一条船上的其他人来说,这是用户错误。您需要为 MiniKube 运行 minikube tunnel 来生成生成 IP。请参阅How to access applications running within minikube 了解更多信息。
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 2019-10-01
  • 2021-11-12
  • 2021-01-12
  • 1970-01-01
  • 2021-09-19
  • 2021-03-03
  • 2021-10-27
相关资源
最近更新 更多