当前正在运行启用Istio 1.5.1和STRICT全局mTLS的EKS 1.14集群。 我有一个StatefulSet,其中有多个Pod,其中一个Pod被选为领导者,而其他Pod需要与领导者进行交流(请考虑RabbitMQ,cassandra,kafka)。
在没有Istio的情况下,通过运行从podA到podB的通信不会出现问题
curl -v <podA-IP>
在podB上。但是,有了Istio,卷发就会恢复
curl -v 10.0.20.28:9080
* Rebuilt URL to: 10.0.20.28:9080/
* Trying 10.0.20.28...
* TCP_NODELAY set
* Connected to 10.0.20.28 (10.0.20.28) port 9080 (#0)
> GET / HTTP/1.1
> Host: 10.0.20.28:9080
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 502 Bad Gateway
< date: Tue, 07 Apr 2020 14:51:59 GMT
< server: envoy
< content-length: 0
<
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.20.28 left intact
我了解Istio是面向服务的,理想情况下,我们总是只使用服务而不是直接Pod与Pod的连接,但是在这种情况下,我确实需要与特定Pod进行对话(其IP正在传播到其他豆荚。
是否可以通过IP与其他Pod联系?
谢谢!
编辑: 似乎可以使用
curl -vvv -H "Host: serviceB" 10.0.20.28:port/page
也是如此,除非那只是
curl -v serviceB:port/page
变相。
答案 0 :(得分:0)
Istio实际上允许Pod到Pod。您遇到的问题可能与我在这里遇到的问题完全相同:Istio direct Pod to Pod communication。
您可以阅读该线程,但是简而言之,您可能在Envoy边车初始化之前就开始了通信,因此稍加延迟就可以解决您的问题。