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

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

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

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

Service的ExternalTrafficPolicy是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的ClusterIP,可以看到SVC的后端两个Pod都会被加到IPVS的转发规则。

image.png

对于SVC的ExternalIP,可以看到SVC的后端,只有该节点的后端Pod 10.0.1.104才会被加到IPVS的转发规则

image.png

在LoadBalancer的SVC模式下,如果ExternalTrafficPolicy为Local,对于ClusterIP来说,会把所有SVC后端Pod都会加到该节点的IPVS转发规则;对于ExternalIP,只会把该节点上的SVC后端Pod才会加到IPVS规则中。如果该节点没有SVC后端Pod,则该节点上的Pod访问SVC的ExternalIP将会是失败。


Service的ExternalTrafficPolicy是Cluster

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

image.png

cn-hongkong.10.0.1.82

对于SVC的ClusterIP,可以看到SVC的后端两个Pod都会被加到IPVS的转发规则。

image.png 对于SVC的ExternalIP,可以看到SVC的后端两个Pod都会被加到IPVS的转发规则。

image.png

 

在LoadBalancer的SVC模式下,如果ExternalTrafficPolicy为Cluster,对于ClusterIP或ExternalIP来说,会把所有SVC后端Pod都会加到该节点的IPVS转发规则。

 

小结

可以访问到目

 

Conntrack表信息

Service nginx的ExternalTrafficPolicy是Local

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

 

如果访问是SVCClusterIP,通过conntrack 信息,可以看到src是源端Pod 10.0.1.91dstSVC ClusterIP 192.168.2.115,dport是SVC中port并且期望是10.0.1.104 来回包给 10.0.1.91

image.png

如果访问是SVCExternalIP,通过conntrack 信息,可以看到src是源端Pod 10.0.1.91dstSVC ExternalIP 10.0.3.62。dport是SVC中port并且期望是10.0.1.104 来回包给 10.0.1.91

image.png

Service nginx1ExternalTrafficPolicy是Cluster

SVC nginx1 CLusterIP192.168.2.253ExternalIP是10.0.3.63后端是10.0.1.10410.0.3.58

如果访问是SVCClusterIP,通过conntrack 信息,可以看到src是源端Pod 10.0.1.91dstSVC ClusterIP 192.168.2.253dport是SVC中port并且期望是10.0.1.104 来回包给 10.0.1.91

image.png

如果访问是SVCExternalIP,通过conntrack 信息,可以看到src是源端Pod 10.0.1.91dstSVC ExternalIP 10.0.3.63dport是SVC中port并且期望是节点ECSIP 10.0.1.82 来回包给 10.0.1.91

image.png

 综上可以看到src变换了多次,故在Cluster 模式下,会存在丢失真实客户端IP情况

 

数据链路转发示意图:

image.png

 

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

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

整个请求链路是ECS1 Pod1 eth0 ->Pod1 calixxxx ->Pod2 calixxxx ->ECS1 Pod2 eth0

访问SVC IPSVC 会在源端pod eth0和calixxx网卡捕捉到,在目端podeth0和calixxx时捕捉不到

在LoadBalancerSVC模式下,如果ExternalTrafficPolicy为Local,对于ClusterIP来说,会把所有SVC后端Pod都会加到该节点IPVS转发规则;对于ExternalIP,只会把该节点上SVC后端Pod才会加到IPVS规则中

在LoadBalancerSVC模式下,如果ExternalTrafficPolicy为Cluster,对于ClusterIP或ExternalIP来说,会把所有SVC后端Pod都会加到该节点IPVS转发规则,同时无法保留src地址

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

4) 场景三:访问PodIP,异节点pod间互访

环境

image.png

 

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

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

内核路由

centos-67756b6dc8-h5wnp IP地址10.0.1.104,该容器在宿主机表现的PID是2211426,该容器网络命名空间有指向容器eth0的默认路由。

用上述类似办法可以发现centos-67756b6dc8-h5wnp的veth pair的cali44ae9fbceeb,Pod网络空间只有默认路由。

image.png

image.png

 

在ECS OS内,有指向Pod IP,下一跳为calixxxx的路由,通过前文可以知道calixxx网卡是和每个pod内的veth1组成的pair,所以,pod内访问SVC的CIDR会有指向veth1的路由,不会走默认的eth0路由。故:calixx网卡在这里的主要作用是用于:1.节点访问Pod 2. 当节点或者Pod访问 SVC的CIDR时,会走ECS OS内核协议栈转换,走到calixxx和eth0访问pod,对于目的为外部地址,则走Pod所属的ENI 出ECS进入到了VPC。

image.png

 

小结

可以访问到目

数据链路转发示意图:

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 calixxxxx->ECS1 ethx -> vpc route rule(如有) ->ECS2 ethx ->ECS2 Pod2 calixxxxx->ECS2 Pod2 eth0;

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

 

5) 场景四:群内非SVC后端pod所在节点访问SVC ClusterIP

环境

image.png

image.png

image.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。

Service2 是ngin1,ClusterIP是192.168.2.253 ExternalIP是10.0.3.63

内核路由

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

源端ECS上的IPVS规则

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

 

小结

可以访问到目

 

Conntrack表信息

Service nginxExternalTrafficPolicy是Local

SVC nginx CLusterIP是192.168.2.115,ExternalIP是10.0.3.62。后端是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 ClusterIP 192.168.2.115,dport是SVC中的port。并且期望是10.0.3.58 来回包给 10.0.1.91。

 

cn-hongkong.10.0.3.49

image.png

 

目的端ECS上src是源端Pod 10.0.1.91,dst是Pod的IP 10.0.3.58,port是pod的port。并且期望此pod 来回包给 10.0.1.91。

 

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,dstSVC ClusterIP 192.168.2.115,dport是SVC中的port。并且期望是10.0.3.58 来回包给 10.0.1.91。

 

cn-hongkong.10.0.3.49

image.png

 

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

 

对于ClusterIP来说,源端ECS会把所有SVC后端Pod都会加到该节点IPVS转发规则,目端ECS是捕获不到任何SVC ClusterIP信息,只能捕获到源端PodIP,所以回包时候会回到源端Pod附属网卡上

 

数据链路转发示意图:

 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 calixxxxxx ->ECS1 主网卡eth0 -> vpc route rule(如有) ->ECS2 附属网卡ethx ->ECS2 Pod2 calixxxxx ->ECS2 Pod2 eth0

回方向:

ECS2 Pod2 eth0 ->ECS2 Pod2 calixxxxx ->ECS2 附属网卡ethx -> vpc route rule(如有) ->ECS1 附属网卡eth1 ->ECS1 Pod1 calixxxxxx ->ECS1 Pod1 eth0

 

对于ClusterIP来说,源端ECS会把所有SVC后端Pod都会加到该节点IPVS转发规则,目端ECS是捕获不到任何SVC ClusterIP信息,只能捕获到源端PodIP,所以回包时候会回到源端Pod附属网卡上

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

 


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

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

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
3月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
3月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
203 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
3月前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
2月前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
3月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
3月前
|
Cloud Native 持续交付 云计算
云原生架构的崛起:企业数字化转型的加速器
在当今快速发展的技术环境中,企业正面临着前所未有的变革压力。本文深入探讨了云原生架构如何成为推动企业数字化转型的关键力量。通过分析其核心概念、优势以及实施策略,本文旨在为读者提供对云原生技术的全面理解,展示其在现代企业中不可或缺的作用。
67 19
|
3月前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
3月前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
4月前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
57 13