Kubernetes Istio代理无法连接到EKS上的Istio Pilot

Kubernetes Istio代理无法连接到EKS上的Istio Pilot,kubernetes,istio,amazon-eks,Kubernetes,Istio,Amazon Eks,我已经按照说明和安装了EKS上的bookinfo 在验证应用程序是否正确安装时,我在尝试打开产品页面时收到了000。在检查了我的网络连接VPC/子网/路由/安全组后,我将问题归结为istio网络问题 经过进一步调查,我登录到istio sidecar container for productpage,并注意到以下错误 [2019-01-21 09:06:01.039][10][warning][upstream] external/envoy/source/common/config/grpc

我已经按照说明和安装了EKS上的bookinfo

在验证应用程序是否正确安装时,我在尝试打开产品页面时收到了000。在检查了我的网络连接VPC/子网/路由/安全组后,我将问题归结为istio网络问题

经过进一步调查,我登录到istio sidecar container for productpage,并注意到以下错误

[2019-01-21 09:06:01.039][10][warning][upstream] external/envoy/source/common/config/grpc_mux_impl.cc:41] Unable to establish new stream
[2019-01-21 09:06:28.150][10][warning][upstream] external/envoy/source/common/config/grpc_mux_impl.cc:240] gRPC config stream closed: 14, no healthy upstream
这使我注意到istio代理指向istio pilot.istio系统:15007发现地址。唯一奇怪的是,kubernetes istio-pilot.istio-system服务似乎没有暴露端口15007,如下所示

[procyclinsur@localhost Downloads]$ kubectl get svc istio-pilot --namespace=istio-system
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                 AGE
istio-pilot   ClusterIP   172.20.185.72   <none>        15010/TCP,15011/TCP,8080/TCP,9093/TCP   1d

向您发送调试Istio时可能非常有用的链接。

向您发送调试Istio时可能非常有用的链接。

要验证Istio是否正常工作,请从另一个pod向productpage发送请求,例如,从评级:

输出应该是:简单书店应用程序

如果得到正确的输出,那么问题可能在于入口定义


仔细验证您是否遵循了指定的步骤。

要验证Istio是否正常工作,请从另一个pod向productpage发送请求,例如从评级:

输出应该是:简单书店应用程序

如果得到正确的输出,那么问题可能在于入口定义


仔细验证您是否遵循了指定的步骤。

忽略gRPC警告它们没有意义。确保您已执行kubectl应用程序-f samples/bookinfo/networking/bookinfo-gateway.yaml

如果执行kubectl exec$kubectl get pod-selector app=ratings-output jsonpath='{.items[0].metadata.name}'-c istio proxy-ps-ef,您将看到如下条目 -发现地址istio飞行员。istio系统:15011。这就是sidecar使用的地址 联系飞行员,并应匹配您看到的条目 使用kubectl-NISTIO系统获取服务istio pilot

如果发现地址与引导端口匹配,则可以测试网络。您无法轻松对发现地址进行卷曲,但如果执行此操作,kubectl exec$kubectl get pod-selector app=ratings-output jsonpath='{.items[0].metadata.name}'-c istio proxy-curlhttps://istio-pilot.istio-system:15011 如果你得到一个超时,那么就会出现通信问题


发现地址来自Istio配置。如果您使用kubectl-n istio系统获取cm istio侧车喷油器,并且安装时间比您的istio安装时间早,则升级较旧的istio版本时可能会出现问题。

忽略gRPC警告,这些警告没有意义。确保您已执行kubectl应用程序-f samples/bookinfo/networking/bookinfo-gateway.yaml

如果执行kubectl exec$kubectl get pod-selector app=ratings-output jsonpath='{.items[0].metadata.name}'-c istio proxy-ps-ef,您将看到如下条目 -发现地址istio飞行员。istio系统:15011。这就是sidecar使用的地址 联系飞行员,并应匹配您看到的条目 使用kubectl-NISTIO系统获取服务istio pilot

如果发现地址与引导端口匹配,则可以测试网络。您无法轻松对发现地址进行卷曲,但如果执行此操作,kubectl exec$kubectl get pod-selector app=ratings-output jsonpath='{.items[0].metadata.name}'-c istio proxy-curlhttps://istio-pilot.istio-system:15011 如果你得到一个超时,那么就会出现通信问题


发现地址来自Istio配置。如果您使用kubectl-n istio系统获取cm istio侧车喷油器,并且安装时间比您的istio安装时间早,则升级较旧的istio版本时可能会出现问题。

我想发布我的问题的解决方案

问题:

EKS DNS没有正常工作,这就是为什么其他解决方案都不是很好!!为我工作

原因:

首次创建AWS专有网络时,EKS的专有网络DNS设置未正确设置。EKS需要启用以下VPC设置

DNS解析:已启用
DNS主机名:已禁用我想发布问题的解决方案

问题:

EKS DNS没有正常工作,这就是为什么其他解决方案都不是很好!!为我工作

原因:

首次创建AWS专有网络时,EKS的专有网络DNS设置未正确设置。EKS需要启用以下VPC设置

DNS解析:已启用
DNS主机名:已禁用为什么您认为发现地址是istio pilot。istio系统:15007?我不一定认为是。。我只知道这是硬编码到istio代理中的地址。但是,它似乎不存在于集群中……为什么您认为发现地址是istio pilot。istio系统:15007?我不一定认为它存在。。我只知道这是硬编码到istio代理中的地址。
虽然它似乎不存在于集群中…这是一个很大的帮助,但带来了一大堆新问题。。。首先,命令istioctl proxy status不输出任何内容。这是一个很大的帮助,但带来了一大堆新问题。。。首先,命令istioctl proxy status不输出任何内容。
2019-01-21T09:04:58.949152Z info    Version root@6f6ea1061f2b-docker.io/istio-1.0.5-c1707e45e71c75d74bf3a5dec8c7086f32f32fad-Clean
2019-01-21T09:04:58.949283Z info    Proxy role: model.Proxy{ClusterID:"", Type:"sidecar", IPAddress:"10.20.228.89", ID:"productpage-v1-54b8b9f55-jpz8g.default", Domain:"default.svc.cluster.local", Metadata:map[string]string(nil)}
2019-01-21T09:04:58.949971Z info    Effective config: binaryPath: /usr/local/bin/envoy
configPath: /etc/istio/proxy
connectTimeout: 10s
discoveryAddress: istio-pilot.istio-system:15007
discoveryRefreshDelay: 1s
drainDuration: 45s
parentShutdownDuration: 60s
proxyAdminPort: 15000
serviceCluster: productpage
zipkinAddress: zipkin.istio-system:9411
kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"