2

我在 Kubernetes 中有一个使用 Strimzi 创建的 Kafka 集群。

apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
  name: {{ .Values.cluster.kafka.name }}
spec:
  kafka:
    version: 2.7.0
    replicas: 3
    storage:
      deleteClaim: true
      size: {{ .Values.cluster.kafka.storagesize }}
      type: persistent-claim
    rack: 
      topologyKey: failure-domain.beta.kubernetes.io/zone
    template:
      pod:
        metadata:
          annotations:
            prometheus.io/scrape: 'true'
            prometheus.io/port: '9404'                                           
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external
        port: 9094
        type: loadbalancer
        tls: true
        authentication:
          type: tls
        configuration:  
          bootstrap:
            loadBalancerIP: {{ .Values.cluster.kafka.bootstrapipaddress }}
          brokers:  
          {{- range  $key, $value := (split "," .Values.cluster.kafka.brokersipaddress) }}  
            - broker: {{ (split "=" .)._0 }}
              loadBalancerIP: {{ (split "=" .)._1 | quote }}
          {{- end }}
    authorization:
      type: simple

集群已创建并启动,我能够创建主题并从主题生产/消费。问题是,如果我执行到 Kafka 代理 pod 之一,我会看到间歇性错误

INFO [SocketServer brokerId=0] Failed authentication with /10.240.0.35 (SSL handshake failed) (org.apache.kafka.common.network.Selector) [data-plane-kafka-network-thread-0-ListenerName(EXTERNAL-9094)-SSL-9]

INFO [SocketServer brokerId=0] Failed authentication with /10.240.0.159 (SSL handshake failed) (org.apache.kafka.common.network.Selector) [data-plane-kafka-network-thread-0-ListenerName(EXTERNAL-9094)-SSL-11]

INFO [SocketServer brokerId=0] Failed authentication with /10.240.0.4 (SSL handshake failed) (org.apache.kafka.common.network.Selector) [data-plane-kafka-network-thread-0-ListenerName(EXTERNAL-9094)-SSL-10]

INFO [SocketServer brokerId=0] Failed authentication with /10.240.0.128 (SSL handshake failed) (org.apache.kafka.common.network.Selector) [data-plane-kafka-network-thread-0-ListenerName(EXTERNAL-9094)-SSL-1]

在检查了这些 IP [10.240.0.35, 10.240.0.159, 10.240.0.4,10.240.0.128] 后,我发现它们与 kube-system 命名空间中的 pod 相关,这些命名空间是作为 Kafka 集群部署的一部分隐式创建的。

在此处输入图像描述

知道有什么问题吗?

4

1 回答 1

0

我认为这不一定是错误的。您似乎有一些应用程序在没有正确配置 TLS 的情况下尝试连接到代理。但是随着连接被转发,IP 可能会被屏蔽 - 所以它不再显示真正的外部 IP。这些可能是各种各样的事情,从错误配置的客户端到尝试打开 TCP 连接的一些健康检查(例如,根据您的环境,负载均衡器可以做到这一点)。

不幸的是,要找出它们真正来自哪里有点困难。您可以尝试通过 whoeevr 的日志来跟踪它,它拥有它来自的 IP 地址,因为它是从其他人转发的等等。您还可以尝试使用 Java 系统属性在 Kafka中启用TLS 调试javax.net.debug=ssl。但这可能只在某些情况下对错误配置的客户端有帮助,而不是对某些 TPC 探测有帮助,而且它也会使在日志中找到正确的位置变得困难,因为它还会转储使用 TLS 的复制流量等。

于 2021-04-08T09:10:35.067 回答