云计算
背景
为测试伊斯迪奥流量管理,将两个服务睡眠、睡眠的两个版本v1、v2(部署文件见参考链接)部署到伊斯迪奥环境中,通过睡眠-v1向弗拉斯卡普发起调用http://flaskapp/env/version,正常结果会交替打印出结果第五颅神经的眼支和v2,然而在调用过程中报错503复位原因:连接失败,故将问题的步骤、现象、分析、验证整理于此。
步骤
部署睡眠、睡眠应用,同时伊斯迪奥平台开启mTls,命名空间康克志开启自动注入,部署如下图所示:
ku bectl应用-关闭睡眠。伊斯迪奥。YAML-新康日
ku bectl应用瓶。伊西托。YAML-新康日
#查看豆荚创建情况
kubectl -n kangxzh get pod -w
运行0 13秒的flaskapp-v1-775 dbb9b 79-z54fj 2/2
烧瓶-v2-d 454 CD 47-MDB 8s 2/2运行0 14秒
睡眠-v1-7f45c6cf94-zgdsf 2/2运行0 19小时
睡眠-v2-58dff94b49-fz6sj 2/2运行0 19小时
现象
在睡眠应用中发起超文本传送协议(超文本传输协议的缩写)请求,调用flaskapp,curl http://flaskapp/env/version,如下所示:
#
export SOURCE _ POD=$(ku bectl get POD- l app=sleep,version=v1 -o jsonpath={ .项目.元数据。名称})
# 进入睡眠发起超文本传送协议(超文本传输协议的缩写)请求
kubectl-n kangxzh exec-it-c sleep $ SOURCE _ POD bash
bash-4.4 # curl http://flaskapp/env/version
# 响应
上游连接错误或在集管之前断开/重置。重置原因:连接失败
背景
1.检测flaskapp tls配置,如下:
[root @ kubernetes-master flaskapp]# istioctl authn TLS-check flaskapp-v1-775 dbb9b 79-z54fj flaskapp。kangxzh。SVC。集群。当地的
主机:端口状态服务器客户端验证策略目标规则
弗拉斯卡普。kangxzh。SVC。集群。本地:80正常mTLS mTLS默认/默认/istio-系统
状态正常证明flaskapp tls配置正确。
进入睡眠代理向弗拉斯卡普发起超文本传送协议(超文本传输协议的缩写)请求:
ku bectl-n kangxzh exec-it-c istio-proxy $ SOURCE _ POD bash
# 发起请求
curl http://flaskapp/env/version
# 响应
第五颅神经的眼支
2.发现通过委托代理可以得到相应,因为开启了mtls,通过委托代理直接请求是需要添加伊斯迪奥相关证书的,此时没有加入证书也可请求,所以想到检查flaskapp iptables配置,如下所示:
# 获取进程号
PID=$(docker inspect-format { {。状态。PID } } $(docker PS | grep flaskapp-v1 | awk \ \ \ ' { print $ 1 } \ \ \ ' | head-n 1))
# 查看iptables规则
nsenter-t $ { PID }-n iptables-t NAT-L-n-v
# 输出
链预路由(策略接受477个数据包,28620字节)
pkts字节目标保护选择输入输出源目标
487 29220 ISTIO入站TCP-* * 0。0 .0 .0/0 0 .0 .0/0
链输入(策略接受487个数据包,29220字节)
pkts字节目标保护选择输入输出源目标
链输出(策略接受220个数据包,20367个字节)
pkts字节目标保护选择输入输出源目标
0 480 ISTIO _ OUTPUT TCP-* * 0。0 .0 .0/0 0 .0 .0 .0/0
链后路由(策略接受220个数据包,20367个字节)
pkts字节目标保护选择输入输出源目标
链ISTIO_INBOUND (1个引用)
pkts字节目标保护选择输入输出源目标
10 600 ISTIO _ IN _ REDIRECT TCP-* * 0。0 .0 .0/0 0 .0 .0/0 TCP DPT:80 #是没有的,修改后增加
链式重定向(1个引用)
pkts字节目标保护选择输入输出源目标
10 600重定向TCP-* * 0。0 .0 .0/0 0 .0 .0/0重定向端口15001
链ISTIO_OUTPUT (1个引用)
pkts字节目标保护选择输入输出源目标
0 0 ISTIO _ REDIRECT all-* lo 0。0 .0 .0/0!127.0.0.1
8 480返回所有-* * 0 .0 .0 .0/0 0 .0 .0/0所有者用户界面设计(User Interface Design的缩写)匹配1337
0 0返回全部-* * 0 .0 .0 .0/0 0 .0 .0/0所有者情报总部(General Intelligence Division)匹配1337
0 0全部返回- * * 0.0.0.0/0 127.0.0.1
0 0 ISTIO _ REDIRECT all-* * 0。0 .0 .0/0 0 .0 .0/0
链ISTIO_REDIRECT (2个引用)
pkts字节目标保护选择输入输出源目标
0 0重定向TCP-* * 0。0 .0 .0/0 0 .0 .0/0重定向端口15001
证明使者没有劫持到flaskapp 80的流量,也就是说上述第2步是睡眠代理直接请求弗拉斯卡普,没有经过flaskapp-istio-proxy转发。
此时才检查弗拉斯卡普部署,如下所示:
…
-
apiVersion:扩展/v1beta1
种类:部署
元数据:
名称:flaskapp-v1
规格:
副本:1
模板:
元数据:
标签:
应用程序:flaskapp
版本:v1
规格:
容器:
-姓名:弗拉斯卡普
图像:灰尘/碎屑
imagePullPolicy: IfNotPresent
端口:
-名称:http
集装箱港口:80 #缺少集装箱港口
环境:
-名称:版本
值:v1
.
官网说明伊斯特奥https://号。io/文档/设置/kubernetes/附加-设置/请求/中:
豆荚端口:pod必须包括每个容器监听的端口的明确列表。在每个端口的容器规范中使用集装箱港口配置。任何未列出的端口都会绕过伊斯迪奥代理。
# 未列出来来的端口都会绕过伊斯迪奥代理
同时描述扁平豆荚如下所示:
ku bectl描述吊舱flaskapp-v1-6 df 8d 69 FB 8-fb5mr-n kangxzh
#
委托代理人:
.省略若干
参数:
.
-并发性
2
- controlPlaneAuthPolicy
相互_TLS
-状态运动
15020
-应用端口
#为空
在部署中增加集装箱港口:80后,如下所示:
委托代理人:
.省略若干
参数:
.
-并发性
2
- controlPlaneAuthPolicy
相互_TLS
-状态运动
15020
-应用端口
80
注意:在Istio1.2版本以后也可通过设置豆荚注释中traffic.sidecar.istio.io/includeInboundPorts来达到同样的目的,缺省值为豆荚的集装箱港口列表,逗号分隔的监听端口列表,这些流量会被重定向到边车*会重定向所有端口,具体详情参见官网1.2新特性(见参考链接)
验证
睡眠发起请求:
[root @ kubernetes-master flaskapp]# kube CTL-n kangxzh exec-it-c sleep $ SOURCE _ POD bash
bash-4.4 # curl http://flaskapp/env/version
#响应
第五颅神经的眼支
睡眠代理未携带证书,发起请求:
ku bectl-n kangxzh exec-it-c istio-proxy $ SOURCE _ POD bash
istio-proxy @ sleep-v1-7f 45 c6cf 94-zgdsf:/$ curl http://flaskapp/env/version
#响应
卷曲:(56) Recv失败:连接被对等方重置
睡眠代理携带证书,发起请求
istio-proxy @ sleep-v1-7f 45 c 6 cf 94-zgdsf:/$ curl https://flaskapp:80/env/version-key/etc/certs/key。PEM-cert/etc/certs/cert-chain。PEM-cacert/etc/certs/root-cert。PEM-k
#响应
第五颅神经的眼支
参考链接
https://github.com/fleeto/sleep
https://github.com/fleeto/flaskapp
伊斯特奥https://号。io/文档/设置/kubernetes/附加-设置/请求/
https://preliminary.istio.io/about/notes/1.2/
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn