我已经将Kafka部署为带状态的集合,并将zookeeper配置为领导者选择器(无头服务)。 Kafka的运行情况完全符合预期。但是,在配置Istio访问kafka时遇到了问题。
$ kubectl get pods -owide | grep -i kafka
kafka-mon-0 1/1 Running 0 3d1h <IP>
$ kubectl get svc -owide | grep -i kafka
kafka-mon-http LoadBalancer <IP> <Ext-IP> 8080:30875/TCP app=kafka-mon
kafka-mon-svc ClusterIP None <none> 8080/TCP app=kafka-mon
如果我使用Kakfa LoadBalancer Service配置Istio,则可以访问UI。但是,如果我使用无头服务,则UI本身不可访问。我也测试了其他不同的服务,情况也是如此。
$ kubectl get gateway,virtualservice | grep -i kafka
gateway.networking.istio.io/kafka-mon-gateway 4h
virtualservice.networking.istio.io/kafka-mon-vservice 4h
如果Virtualservice配置了Load Balancer服务,但没有配置headless服务,则Istio可以完美地工作。请帮助我找出问题所在。
对于Istio,我已经部署了一个网关路由器作为内部入口网关,并带有http端口80,https端口443和一个虚拟服务,其中路由目标主机作为Kafka-headless服务,它不起作用,但是如果进行路由则可以工作目标主机配置为负载均衡器服务。
我无法解决此问题。请提出建议。
答案 0 :(得分:0)
我遇到了这个问题,并通过添加服务条目来解决。当我们使用无头svc时,istio不确定将流量定向到何处。您可以在下面添加类似的内容。
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: kafka-se
namespace: <If any namespace>
spec:
hosts:
- kafka.default.svc.cluster.local
location: MESH_INTERNAL
ports:
- name: grpc
number: 5445
protocol: TCP
resolution: DNS