《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——3. Terway ENIIP 模式架构设计(下)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——3. Terway ENIIP 模式架构设计(下)

更多精彩内容,欢迎观看:

《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——3. Terway ENIIP 模式架构设计(中):https://developer.aliyun.com/article/1221454?spm=a2c6h.13148508.setting.27.15f94f0eR4QihT

6 场景五:Cluster模式,集群内非SVC后端pod所在节点访问SVC External IP

环境

image.pngimage.png

 

cn-hongkong.10.0.3.49节点上存在 nginx-7d6877d777-h4jtf和10.0.3.58

cn-hongkong.10.0.1.82 节点上存在 centos-67756b6dc8-h5wnp和10.0.1.91

Service2 是ngin1,ClusterIP是192.168.2.253 ExternalIP是10.0.3.63

内核路由

内核路由部分已经在2.2和2.3 小结中详细说明,这里不再进行过多阐述。

源端ECS上的IPVS规则

根据2.2 小结中的源端ECS上的IPVS规则,我们可以得到:ExternalTrafficPolicy为Cluster模式下,对于ExternalIP来说,会把所有SVC后端Pod都会加到该节点IPVS转发规则

 

小结

可以访问到目

 

Conntrack表信息

Service nginx1ExternalTrafficPolicy是Cluster

SVC nginx1 CLusterIP是192.168.2.253,ExternalIP是10.0.3.63,后端是10.0.1.104和10.0.3.58

 

cn-hongkong.10.0.1.82

image.png

源端ECS上src是源端Pod 10.0.1.91,dst是SVC ExternalIP 10.0.3.63,dport是SVC中的port。并且期望是10.0.3.58 来回包给源端ECS的地址10.0.1.82

 

cn-hongkong.10.0.3.49

 image.png 

目的端ECS上src是源端Pod所在的ECS地址10.0.1.82,dst是Pod的IP 10.0.3.58,dport是pod的port。并且期望此pod 来回包给源端ECS的地址10.0.1.82

在ExternalTrafficPolicy为Cluster下,对于ExternalIP来说,源端ECS会把所有SVC后端Pod都会加到该节点的IPVS转发规则,目的端ECS是捕获不到任何SVC ExternalIP信息的,只能捕获到源端Pod所在的ECS的IP,所以回包的时候会回到源端Pod所在的ECS的主网卡上,这一点明显和2.4 小结中访问CusterIP有很明显区别。

 

数据链路转发示意图:

image.png 

会经过calicao网卡,每个非hostnetworkpod会和calicao网卡形成veth pair,用于和其他pod或node进行通信

整个链路请求会经过pod所分配ENI,直接在OSns中命中Ip rule 被转发;

出ECS后,根据要访问pod和该pod ENI所属vswitch,命中VPC路由规则或者直接VSW上二层转发;

整个请求链路ECS1 Pod1 eth0 ->ECS1 Pod1 calixxxx ->ECS1 主网卡ENI eth0 -> vpc route rule(如有) ->ECS2 附属网卡ethx->ECS2 Pod2 calixxx ->ECS2 Pod2 eth0

在ExternalTrafficPolicy为Cluster下,对于ExternalIP来说,源端ECS会把所有SVC后端Pod都会加到该节点IPVS转发规则,目端ECS是捕获不到任何SVC ExternalIP信息,只能捕获到源端Pod所在ECSIP,所以回包时候会回到源端Pod所在ECS主网卡

数据链路要经过四次内核协议栈,Pod1协议栈、ECS1协议栈、Pod2协议栈、ECS2协议

 

7 场景六:Local模式,集群内非SVC后端pod所在节点访问SVC External IP

环境

image.pngimage.png

cn-hongkong.10.0.3.49节点上存在 nginx-7d6877d777-h4jtf和10.0.3.58

cn-hongkong.10.0.1.82 节点上存在 centos-67756b6dc8-h5wnp和10.0.1.91

Service1 是nginx,ClusterIP是192.168.2.115 ExternalIP是10.0.3.62。

内核路由

内核路由部分已经在2.2和2.3 小结中详细说明,这里不再进行过多阐述。

 

源端ECS上IPVS规则

ServiceExternalTrafficPolicy是Local

SVC nginx CLusterIP是192.168.2.115,ExternalIP是10.0.3.62。后端是10.0.1.104和10.0.3.58

 image.png

cn-hongkong.10.0.1.82

对于SVC的ExternalIP,可以看到SVC的后端,无任何转发规则

 image.png 

根据2.2 小结中的源端ECS上的IPVS规则,我们可以得到:ExternalTrafficPolicy为Local模式下,对于ExternalIP来说,只会把本节点上的SVC的后端Pod加到节点上的IPVS转发规则,如果该节点没有SVC后端,则不会有任何可以转发的规则。

 

小结

不可以访问到目

 

Conntrack表信息

ServiceExternalTrafficPolicy是Local

SVC nginx1 CLusterIP是192.168.2.253,ExternalIP是10.0.3.63,后端是10.0.1.104和10.0.3.58

cn-hongkong.10.0.1.82 无任何conntrack记录表生成

 image.png

 

数据链路转发示意图:

 

image.png 

会经过calicao网卡,每个非hostnetworkpod会和calicao网卡形成veth pair,用于和其他pod或node进行通信

整个链路请求不会经过pod所分配ENI,直接在OSns中命中Ip rule 被转发;

整个请求链路是ECS1 Pod1 eth0 ->ECS1 Pod1 calixxxx ->ECS host 空间ipvs/iptables规则,无后端转发ep终止链路

ExternalTrafficPolicy为Local模式下,对于ExternalIP来说,只会把本节点上SVC后端Pod加到节点上IPVS转发规则,如果该节点没有SVC后端,则不会有任何可以转发规则

 

 

8 场景七:集群外访问SVC External IP

环境

 image.png

image.png


cn-hongkong.10.0.3.49节点上存在 nginx-7d6877d777-h4jtf和10.0.3.58

cn-hongkong.10.0.1.47 节点上存在 nginx-7d6877d777-kxwdb和10.0.1.29

Service1 是nginx,ClusterIP是192.168.2.115 ExternalIP是10.0.3.62。

SLB相关配置

在SLB控制台,可以看到 lb-j6cw3daxxukxln8xccive虚拟服务器组的后端服务器组是两个后端nginxPod的ENI eni-j6c4qxbpnkg5o7uog5kr和eni-j6c6r7m3849fodxdf5l7

 image.png

 

从集群外部角度看,SLB的后端虚拟服务器组是SVC的后端Pod所属的两个ENI网卡,内网的IP 地址就是Pod的地址。

小结

可以访问到目

数据链路转发示意图:

image.png

 

数据链路:client -> SLB->Pod ENI +Pod Port->ECS1 Pod1 eth0

数据链路要经过二次内核协议栈,Pod1协议栈和ECS协议

 

9 小结

本篇文章主要聚焦ACK 在Terway ENIIP模式下,不同SOP场景下的数据链路转发路径。伴随着客户对性能的极致追求的需求,在Terway ENIIP模式下,一共可以分为7个SOP场景,并对这七个场景的转发链路,技术实现原理,云产品配置等一一梳理并总结,这对我们遇到Terway ENIIP架构下的链路抖动、最优化配置,链路原理等提供了初步指引方向。

 

在Terway ENIIP 模式下,利用veth pair来联通宿主机和pod的网络空间,pod的地址是来源于弹性网卡的辅助IP地址,并且节点上需要配置策略路由来保证辅助IP的流量经过它所属的弹性网卡,通过此种方式可以实现ENI多Pod共享,大大提升了Pod的部署密度,但是veth pair必然会利用ECS的内核协议栈进行转发,此架构下性能必然不如ENI模式,ACK产研为了提升性能,结合内核的ebpf和ipvlan技术,开发了Terway ebpf + ipvlan 架构。

 

下一系列我们将进入到Terway ENIIP模式的全景解析

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
Kubernetes 负载均衡 安全
【技术揭秘】阿里云容器服务Ingress高级玩法:如何轻松实现客户端原始IP透传,提升应用安全性与用户体验!
【8月更文挑战第17天】本文介绍如何在阿里云容器服务中配置Ingress以透传客户端原始IP地址。通过Ingress可实现HTTP负载均衡等功能。需在Ingress定义文件中添加特定注解,如`nginx.ingress.kubernetes.io/real-ip-header: X-Real-IP`。创建并应用Ingress配置后,后端服务可通过读取`X-Real-IP`头获取真实IP。此举有助于安全审计及流量分析。
|
17天前
|
弹性计算 运维 Kubernetes
阿里云容器化管理云上应用一键部署评测报告
阿里云容器服务Kubernetes版(ACK)作为阿里云在容器化领域的旗舰产品,以其卓越的性能、便捷的操作体验和高度的可扩展性,赢得了众多企业的青睐。
|
16天前
|
弹性计算 运维 负载均衡
基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
【8月更文挑战第3天】基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
|
20天前
|
弹性计算 Kubernetes 监控
阿里云 ACK 容器服务评测
在现代企业的数字化转型过程中,容器化技术逐渐成为提高应用部署效率、增强系统弹性和灵活性的关键手段。阿里云的容器服务 Kubernetes 版(ACK)是一个完全托管的 Kubernetes 容器管理服务,旨在帮助企业轻松实现应用的容器化管理和部署。本文将对阿里云 ACK 容器服务的核心功能、性能表现及实际使用体验进行评测,帮助读者更好地理解这一产品。
61 0
|
20天前
|
人工智能 运维 安全
阿里云容器服务ACK:高效管理云上应用的容器化解决方案
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)为开发者提供了一套全面的容器化管理解决方案,旨在简化云上应用的部署、运维和管理。本文将深入探讨ACK的功能、优势及应用场景,为开发者展现容器化技术在云环境下的强大能力。
75 0
|
26天前
|
存储 监控 Cloud Native
kubevela可观测体系问题之KubeVela云原生时代可观测性挑战的问题如何解决
kubevela可观测体系问题之KubeVela云原生时代可观测性挑战的问题如何解决
|
26天前
|
人工智能 Kubernetes Serverless
容器计算服务问题之阿里云在Serverless和AI大模型方面有哪些进展
容器计算服务问题之阿里云在Serverless和AI大模型方面有哪些进展
|
4天前
|
存储 专有云 测试技术
阿里云块存储问题之块存储选择了主干开发模式,发布模式有哪些种类如何解决
阿里云块存储问题之块存储选择了主干开发模式,发布模式有哪些种类如何解决
10 0
|
2月前
|
运维 Cloud Native 测试技术
《阿里云产品四月刊》—提升团队工程交付能力,从“看见”工程活动和研发模式开始(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—提升团队工程交付能力,从“看见”工程活动和研发模式开始(1)
|
2月前
|
Cloud Native 数据库 持续交付
《阿里云产品四月刊》—提升团队工程交付能力,从“看见”工程活动和研发模式开始(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—提升团队工程交付能力,从“看见”工程活动和研发模式开始(2)

热门文章

最新文章