Istio Ingress无法使用无头服务

时间:2019-03-11 09:50:25

标签: kubernetes istio

我已经将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服务,它不起作用,但是如果进行路由则可以工作目标主机配置为负载均衡器服务。

我无法解决此问题。请提出建议。

1 个答案:

答案 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
相关问题