【问题标题】:Istio ingress not working with headless serviceIstio 入口不适用于无头服务
【发布时间】:2019-08-01 14:34:18
【问题描述】:

我已将 Kafka 部署为 statefulset,并将 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 配置了负载均衡器服务,但 Istio 没有配置无头服务,则 Istio 可以完美运行。请帮我解决问题。

对于 Istio,我已经部署了一个网关路由器作为内部入口网关,带有 http 端口-80、https 端口-443 和一个虚拟服务,其路由目标主机作为 Kafka-headless-service,它不起作用,但如果路由它可以工作目标主机配置为负载均衡器服务。

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

【问题讨论】:

  • 您是否在无头服务上添加了一个选择器以指向您的后端 pod,检查您的服务的 kubectl get endpoints 以检查是否创建了从服务到后端的必要路由
  • 另外,看看这个github issue (github.com/istio/istio/issues/5005),好像还没有修复。
  • 嗨@fatcook,我已经验证过了。无头服务指向确切的 pod,它应该引用。端点与 pod ips 相同。我的问题是,我没有得到任何例外来验证这一点。

标签: kubernetes istio


【解决方案1】:

我遇到了这个问题,我通过添加服务条目解决了这个问题。当我们使用无头 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多