Istio 出站流量失败

问题描述 投票:0回答:2

我在 K8s 1.22 上运行 Istio 1.14 最小版本

我正在测试网格内部的不同出站连接,它们都失败并出现以下错误:

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 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。

我的问题是如何推断这一点以便允许所有出站流量?我无法为我尝试连接的所有外部资源创建服务条目。

抱歉解释不好,但我对 K8s 和 Istio 都很陌生。

kubernetes mesh istio
2个回答
0
投票

在 Istio 安装配置中将 meshConfig.outboundTrafficPolicy.mode 设置为 ALLOW_ANY

https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-OutboundTrafficPolicy-Mode


0
投票

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

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

然后我发现我的出站流量解析到了错误的 dns,这是日志

调试特使过滤器 [C24436] 创建与集群 outbound|443||xxxx-svc.xyz.svc.cluster.local 的连接

然后我转到 xyz 命名空间删除 xxxx-svc,然后所有 https 出站流量都适用于我,无需 ServiceEntry

© www.soinside.com 2019 - 2024. All rights reserved.