《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——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模式的全景解析

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
1月前
|
Kubernetes Cloud Native 持续交付
云原生技术:重塑现代应用开发与部署模式####
本文深入探讨了云原生技术的核心概念、发展历程及其在现代软件开发和部署中的关键作用。通过分析云原生架构的特点,如容器化、微服务、持续集成与持续部署(CI/CD),以及它如何促进应用的可伸缩性、灵活性和效率,本文旨在为读者提供一个关于云原生技术全面而深入的理解。此外,还将探讨实施云原生策略时面临的挑战及应对策略,帮助组织更好地把握数字化转型的机遇。 ####
|
2月前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
68 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
1月前
|
弹性计算 Kubernetes 网络协议
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
|
1月前
|
Docker 容器
docker中检查容器的网络模式
【10月更文挑战第5天】
152 1
|
1月前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
1月前
|
安全 物联网 物联网安全
探索未来网络:物联网安全的最佳实践
随着物联网设备的普及,我们的世界变得越来越互联。然而,这也带来了新的安全挑战。本文将探讨在设计、实施和维护物联网系统时,如何遵循一些最佳实践来确保其安全性。通过深入分析各种案例和策略,我们将揭示如何保护物联网设备免受潜在威胁,同时保持其高效运行。
51 5
|
2月前
|
机器学习/深度学习 安全 物联网安全
探索未来网络:物联网安全的最佳实践与创新策略
本文旨在深入探讨物联网(IoT)的安全性问题,分析其面临的主要威胁与挑战,并提出一系列创新性的解决策略。通过技术解析、案例研究与前瞻展望,本文不仅揭示了物联网安全的复杂性,还展示了如何通过综合手段提升设备、数据及网络的安全性。我们强调了跨学科合作的重要性,以及在快速发展的技术环境中保持敏捷与适应性的必要性,为业界和研究者提供了宝贵的参考与启示。
|
2月前
|
NoSQL 应用服务中间件 Redis
Docker跨宿主机容器通信-通过网络跨宿主机互联
这篇文章介绍了Docker容器跨宿主机通信的实现方法,包括Docker的四种网络模式(host、none、container、bridge)以及如何通过修改网络配置和添加路由规则来实现不同宿主机上的容器之间的互联。
227 0
Docker跨宿主机容器通信-通过网络跨宿主机互联
|
2月前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。

热门文章

最新文章