kubernetes Istio出站流量失败

s5a0g9ez  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(139)

我在K8s 1.22上运行Istio 1.14 minimal
我正在测试网格内部的不同出站连接,它们都失败了,错误如下:

Execution of class com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier failed.
com.microsoft.aad.msal4j.MsalClientException: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

Cannot send curl request: SSL connect error - trying again

作为测试,我在启用istio的pod中尝试了一个curl:

curl https://www.google.com #this failed
curl http://www.google.com #this worked

然后,经过阅读,我创建了一个ServiceEntry:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: google
spec:
  hosts:
  - www.google.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL

这就解决了这个问题,curl现在可以同时支持http和https,并支持google。
我的问题是,我如何推断这一点,以便允许所有出站流量?我无法为尝试连接的所有外部资源创建服务目录。
很抱歉我的解释不好,但我对K8和Istio都很陌生。

qzlgjiam

qzlgjiam1#

在Istio安装配置中将meshConfig. outboundPolicyPolicy.mode设置为ALLOW_ANY
https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-OutboundTrafficPolicy-Mode

b0zn9rqh

b0zn9rqh2#

我也遇到了同样的问题,ServiceEntry为出站流量提供了正确的DNS,所以我猜DNS可能对我来说是错误的,我的解决方案是将istio-proxy的日志级别更改为debug

istioctl -n my-namespace proxy-config log pod-name --level envoy:debug

然后我发现我的出站流量解决了一个错误的dns,这里是日志
调试特使筛选器[C24436]创建到群集出站的连接|443|| xxxx-svc.xyz.svc.cluster.local
然后我后藤xyz命名空间删除xxxx-svc,然后所有的https出站流量为我工作,没有ServiceEntry

相关问题