【发布时间】: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