更多精彩内容,欢迎观看:
《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——6. ASM Istio 模式架构设计(中):https://developer.aliyun.com/article/1221385?spm=a2c6h.13148508.setting.33.15f94f0eCydDfj
9) 场景八:Cluster模式下,集群内源端访问SVC ExternalIP(源端和SVC后端不同节点,不同安全组)
环境
cn-hongkong.10.0.4.20节点上存在客户端 centos-59cdc5c9c4-l5vf9和IP 10.0.4.27。
cn-hongkong.10.0.4.244节点上存在服务端 nginx-96bb9b7bb-wwrdm和IP 10.0.5.35。
nginx的svc的ClusterIP是192.168.31.83 External IP是47.243.87.204, ExternalTrafficPolicy 是Cluster模式。
内核路由
ENI-Trunking相比较ENIIP来说,只是在VPC侧增加了对应的Truning和Member ENI,在OS内并无区别,此处可以参考《Terway ENIIP模式架构》。
小结
是否可以访问取决于安全组配置
数据链路转发示意图:
● 会经过calicao网卡,每个非hostnetwork的pod会和calicao网卡形成veth pair,用于和其他pod或node进行通信;
● 整个链路不会和请求不会经过pod所分配的ENI,直接在OS的ns中命中Ip rule 被转发;
● 出ECS后,根据要访问的pod和该pod ENI所属vswitch,命中VPC路由规则或者直接VSW上的二层转发;
● 整个请求链路是ECS1 Pod1 eth0 -> cali1xxx >ECS eth0 -> vpc route rule(如有) ->Pod2 member eni -> Trunk eni (ECS2) cali2 xxx->ECS2 Pod1 eth0;
● 经过ipvs规则fnat转化,数据包是以源pod IP 从ECS eth0 出,请求目的pod IP。(访问SVC clusterIP,以及Local模式下访问External IP);
● 这个经过的ENI有ECS1的eth0,Pod2 member eni。所以这两个网卡的安全组的配置都会影响数据链路的连通性。需要保证安全组互相放通Pod和ECS的响应IP ;
10) 场景九:Cluster模式下,集群内源端访问SVC ExternalIP(源端和SVC后端不同节点,相同安全组)
环境
cn-hongkong.10.0.4.20节点上存在客户端 centos-59cdc5c9c4-l5vf9和IP 10.0.4.27。
cn-hongkong.10.0.4.22节点上存在服务端 nginx-6f545cb57c-kt7r8和IP 10.0.4.30。
nginx的svc的ClusterIP是192.168.81.92 External IP是8.210.162.178 ExternalTrafficPolicy为Cluster。
内核路由
ENI-Trunking相比较ENIIP来说,只是在VPC侧增加了对应的Truning和Member ENI,在OS内并无区别,此处可以参考《Terway ENIIP模式架构》Cluster模式,集群内非SVC后端pod所在节点访问SVC External IP。
小结
是否可以访问取决于安全组配置
数据链路转发示意图:
● 会经过calicao网卡,每个非hostnetwork的pod会和calicao网卡形成veth pair,用于和其他pod或node进行通信;
● 整个链路不会和请求不会经过pod所分配的ENI,直接在OS的ns中命中Ip rule 被转发;
● 出ECS后,根据要访问的pod和该pod ENI所属vswitch,命中VPC路由规则或者直接VSW上的二层转发;
● 整个请求链路是ECS1 Pod1 eth0 -> cali1xxx >ECS eth0 -> vpc route rule(如有) ->Pod2 member eni -> Trunk eni (ECS2) cali2 xxx->ECS2 Pod1 eth0;
● 经过ipvs规则fnat转化,数据包是以源pod IP 从ECS eth0 出,请求目的pod IP。(访问SVC clusterIP,以及Local模式下访问External IP);
● 这个经过的ENI有ECS1的eth0,Pod2 member eni。所以这两个网卡的安全组的配置都会影响数据链路的连通性。需要保证安全组互相放通Pod和ECS的响应IP;
11) 场景十:集群外访问SVC IP
环境
cn-hongkong.10.0.4.20节点上存在客户端 centos-59cdc5c9c4-l5vf9和IP 10.0.4.27。
cn-hongkong.10.0.4.22节点上存在服务端 nginx-6f545cb57c-kt7r8和IP 10.0.4.30。
nginx的svc的ClusterIP是192.168.81.92 External IP是8.210.162.178 ExternalTrafficPolicy为Cluster。
SLB相关配置
在SLB控制台,可以看到 lb-j6cmv8aaojf7nqdai2a6a 虚拟服务器组的后端服务器组是两个后端nginxPod的ENI eni-j6cgrqqrtvcwhhcyuc28, eni-j6c54tyfku5855euh3db和eni-j6cf7e4qnfx22mmvblj0,这几个ENI 都是member ENI。
小结
是否可以访问取决于安全组配置
数据链路转发示意图:
● 会经过calicao网卡,每个非hostnetwork的pod会和calicao网卡形成veth pair,用于和其他pod或node进行通信;
● 数据链路:client -> SLB->Pod Member ENI +Pod Port-> Trunking ENI ->ECS1 Pod1 eth0;
● ExternalTrafficPolicy 为Local或Cluster模式下,SLB只会将Pod分配的member ENI挂在到SLB的虚拟服务器组;
● SLB转发请求只会转发到目标member ENI上,然后通过vlan发送到Trunk ENI,再由Trunk ENI 转发到Pod;