我可以通过Istio启用Pod到Pod(通过Pod IP)通信吗?

时间:2020-04-07 14:58:05

标签: kubernetes istio

当前正在运行启用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联系?

  • 关闭Istio
  • 添加ServiceEntry以将其视为外部服务

谢谢!

编辑: 似乎可以使用

curl -vvv -H "Host: serviceB" 10.0.20.28:port/page

也是如此,除非那只是

curl -v serviceB:port/page

变相。

1 个答案:

答案 0 :(得分:0)

Istio实际上允许Pod到Pod。您遇到的问题可能与我在这里遇到的问题完全相同:Istio direct Pod to Pod communication

您可以阅读该线程,但是简而言之,您可能在Envoy边车初始化之前就开始了通信,因此稍加延迟就可以解决您的问题。