作者:康学志
来源:博云研究院(公众号:bocloudresearch)
背景
为测试Istio流量管理,将两个服务sleep、flaskapp的两个版本v1、v2(部署文件见参考链接)部署到Istio环境中,通过sleep-v1向flaskapp发起调用http://flaskapp/env/version,正常结果会交替打印出结果v1和v2,然而在调用过程中报错503 reset reason: connection failure,故将问题的步骤、现象、分析、验证整理于此。
步骤
部署sleep、flaskapp应用,同时Istio平台开启mTls,命名空间kangxzh开启自动注入,部署如下图所示:
现象
在sleep应用中发起http请求,调用flaskapp,curl http://flaskapp/env/version,如下所示:
背景
1.检测flaskapp tls 配置,如下:
STATUS OK 证明flaskapp tls配置正确。
进入sleep istio-proxy向flaskapp发起http请求:
2.发现通过istio-proxy可以得到相应,因为开启了mtls,通过istio-proxy直接请求是需要添加istio相关证书的,此时没有加入证书也可请求,所以想到检查flaskapp iptables配置,如下所示:
证明envoy没有劫持到flaskapp 80的流量,也就是说上述第2步是sleep-istio-proxy直接请求flaskapp,没有经过flaskapp-istio-proxy 转发。
3.此时才检查flaskapp deployment,如下所示:
官网说明https://istio.io/docs/setup/kubernetes/additional-setup/requirements/中:
同时describe flaskapp pod 如下所示:
在deployment中增加containerPort: 80后,如下所示:
注意:在Istio1.2版本以后也可通过设置Pod annotation 中 traffic.sidecar.istio.io/includeInboundPorts来达到同样的目的,缺省值为Pod的containerPorts列表,逗号分隔的监听端口列表,这些流量会被重定向到 Sidecar,* 会重定向所有端口,具体详情参见官网1.2新特性(见参考链接)
验证
sleep 发起请求:
sleep-istio-proxy 未携带证书,发起请求:
参考链接
> 本文由博云研究院原创发表,转载请注明出处。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞2
添加新评论0 条评论