如何为 Strimzi 创建的 Kafka 引导程序和代理使用不同的负载均衡器端口?

问题描述 投票:0回答:1

我有一个由 Rancher Desktop 创建的本地 k3s Kubernetes 集群。

我正在尝试根据本教程使用负载均衡器设置Kafka外部监听器。这是我的步骤:

kubectl create namespace hm-kafka
kubectl apply --filename="https://strimzi.io/install/latest?namespace=hm-kafka" --namespace=hm-kafka
kubectl apply --filename=my-kafka-persistent.yaml --namespace=hm-kafka

my-kafka-persistent.yaml(基于kafka-persistent.yaml):

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: hm-kafka
spec:
  kafka:
    version: 3.4.0
    replicas: 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:
          brokers:
            - broker: 0
              advertisedPort: 9095
            - broker: 1
              advertisedPort: 9096
            - broker: 2
              advertisedPort: 9097
    config:
      offsets.topic.replication.factor: 3
      transaction.state.log.replication.factor: 3
      transaction.state.log.min.isr: 2
      default.replication.factor: 3
      min.insync.replicas: 2
      inter.broker.protocol.version: "3.4"
    storage:
      type: jbod
      volumes:
        - id: 0
          type: persistent-claim
          size: 100Gi
          deleteClaim: false
  zookeeper:
    replicas: 3
    storage:
      type: persistent-claim
      size: 100Gi
      deleteClaim: false
  entityOperator:
    topicOperator: {}
    userOperator: {}

当我部署时,我遇到了这个问题

豆荚:

服务:

这是因为我的 YAML 文件中的

advertisedPort
选项并没有真正改变负载均衡器本身使用的端口。它仅更改
advertised.listeners
Kafka 代理配置参数中使用的端口号。

他们都尝试使用端口 9094.

我想知道有没有办法可以更改负载均衡器端口,以便引导程序和代理程序具有不同的端口?它会帮助卡夫卡工作吗?谢谢!

另外,我看了另一个类似的问题和它的answer,这是否意味着使用哪个端口取决于Rancher Desktop创建的k3s Kubernetes集群而我们无法控制?谢谢!

apache-kafka load-balancing rancher k3s strimzi
1个回答
0
投票

为了允许客户访问各个经纪人,Strimzi 需要为每个经纪人创建一个

type: LoadBalancer
服务。此外,它还创建了一项针对所有代理的服务以进行引导(可以禁用)。这通常会导致 Kubernetes 为每个服务配置一个负载均衡器 -> 因此无需对端口号进行任何复杂的修改。

如果您的环境不支持这样的负载均衡器,也许最好的办法是尝试使用其他一种机制来公开 Kafka 集群。例如 NodePorts 或 Kubernetes Nginx Ingress。

如果你愿意,你也可以自己做:

  • 配置一个常规的内部监听器而不是
    type: loadbalancer
    一个
  • 使用
    advertisedHost
    advertisedPort
    选项配置要为每个代理使用的主机名和端口
  • 使用您想要的任何配置(例如端口)创建您自己的服务(确保服务有一些自定义名称并且没有 Strimzi 标签以避免它们被 Strimzi 删除或覆盖)
© www.soinside.com 2019 - 2024. All rights reserved.