我有带有 Istio v1.6.4 的 k8s 集群。默认情况下禁用边车注入。我在安装了 strimzi kafka 操作员的 k8s 上运行了 Kafka 集群。当 kafka 和客户端 pod 没有注入 Istio-proxy 时,Kafka 集群可以正常工作。我的问题:当我使用 kafka 客户端创建一个 pod 并注入 Istio-proxy 时,我无法连接到 Kafka 集群。客户端的日志:
java.io.IOException: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
在服务器端:
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 369295616 larger than 104857600)
在谷歌搜索并检查 Istio-proxy 日志后,发现问题在于 Istio-proxy 使用 TLS 连接到 kafka 明文端点。我可以通过设置默认的 PeerAuthentication 来解决这个问题,mtls.mode: DISABLED
但我不想为它设置全局设置。
如果我创建一个简单的 k8s 服务并在运行 kafka 服务器的 pod 上运行 netcat“服务器”,并在运行 kafka 客户端的 pod 上运行 netcat“客户端”,那么有什么奇怪的 - 一切正常。
我有两个问题: