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

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

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

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


3) 场景二:Client和服务端Pod部署于不同ECS

此场景包含下面几个子场景,数据链路可以归纳为一种:

以Pod IP对外提供服务,Client和Pod部署于不同节点;

以SVC ClusterIP对外提供服务,Client和SVC 后端Pod部署于不同节点;

以SVC ExternalIP对外提供服务,ExternalTrafficPolicy为Cluster情况下,集群内Client和SVC后端Pod部署于不同节点;

环境

image.png

 

ap-southeast-1.10.0.0.180节点上存在两个pod:centos-67756b6dc8-rmmxt IP地址172.23.96.23和nginx1-76c99b49df-7plsr IP 地址172.23.96.163

Service nginx1的ExternalTrafficPlicy 为Cluster

 image.png

 

内核路由

Pod网络空间和ECS OS 网络空间的数据交换在 2.1 场景一中已经做了详细描述,此处不再果断篇幅描述。

源端Pod所在ECS的IPVS规则

可以看到,源端数据链路访问svc的clusterip 192.168.13.23 时,如果链路到达ECS的OS内,会命中ipvs规则,被解析到svc的后端endpoint之一(本实例中只有一个pod,所以endpoint只有一个)

image.png

 

小结

可以成功访问到目的端

数据链路转发示意图

image.png

VPC 路由表会自动配置目的地址是pod CIDR,下一跳为Pod 网段所归属的ECS的自定义路由条目,该规则由ACK管控测通过openapi 调用VPC去配置,无需手动配置和删除

image.png

 

内核协议栈示意图:

image.png

 

Conntack 表信息(访问SVC 情况)

 

Node1:

src是源pod IP,dst是svc的ClusterIP,并且期望是由svc的其中一个endpoint

172.23.96.163 来回消息给源端podimage.png 

Node2:

目的pod所在ECS上conntrack 表记录是由源端pod访问目的pod,不会记录svc的clusterip地址

image.png

数据链路:ECS1 Pod1 eth0 -> vethxxx1 -> cni0 ->ECS 1 eth0 -> VPC ->ECS2 eth0 -> cni0 -> vethxxxx2 ->ECS2 Pod2 eth0

数据链路要经过四次内核协议栈,分别是Pod1协议栈,ECS1 OS协议栈,ECS2 OS协议栈和Pod2协议

VPC 路由表会自动配置目地址是pod CIDR下一跳为Pod 网段所归属ECS自定义路由条目,该规则由ACK管控测通过openapi 调用VPC去配置,无需手动配置和删除

如果访问SVC的Cluster IP,或者是Cluster模式下,访问SVCexternalIP,数据链路通过veth pair进到ECS OS内后,会命中相应IPVS规则,并根据负载规则,选择IPVS某一个后端,进而打到其中一个SVC后端endpoint,SVCIP 只会再Pod的eth0veth pair vethxxx被捕捉到,其他链路环节不会捕捉到svcIP

 

4) 场景三:ExternalTrafficPolicy为Local时,Client和服务端Pod部署于集群内不同ECS

此场景包含下面几个子场景,数据链路可以归纳为一种:

 

以SVC ExternalIP对外提供服务,ExternalTrafficPolicy为Local情况下,集群内Client和SVC后端Pod部署于不同节点;

环境

image.png 

ap-southeast-1.10.0.0.180节点上存在两个pod:centos-67756b6dc8-rmmxt IP地址172.23.96.23和nginx1-76c99b49df-7plsr IP 地址172.23.96.163

Service nginx1 ExternalTrafficPolicy 为Local

image.png

内核路由

Pod网络空间和ECS OS 网络空间的数据交换在 2.1 场景一中已经做了详细描述,此处不再果断篇幅描述。

源端Pod所在ECS的IPVS规则

可以看到,源端数据链路访问svc的external ip 8.219.164.113 时,如果链路到达ECS的OS内,会命中ipvs规则,但是我们可以看到external ip并没有相关的后端endpoint,链路达到OS后,会命中IPVS规则,但是没有后端pod,所以会出现connection refused

image.png

 

小结

不可以访问到目的端,此时会访问失败,Connection refused

数据链路转发示意图:

image.png

 

内核协议栈示意图

 image.png 

数据链路:ECS1 Pod1 eth0 -> vethxxx1 ->

数据链路要经过一次半内核协议栈,分别是Pod1协议栈,半个ECS1 OS协议栈 

如果访问SVCExternal IP,或者是Local模式下,访问SVCexternalIP,数据链路通过veth pair进到ECS OS内后,会命中相应IPVS规则,但是由于Local模式,External IPIPVS为空,所以命中规则但是无转发后端,整个链路会在ipvs终止,访问失败所以建议集群内采用clusterip访问,这也是k8s官方推荐最佳实践


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

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

相关实践学习
使用操作系统智能助手OS Copilot解锁操作系统运维与编程
在本实验场景中,将在阿里云ECS上体验OS Copilot产品。OS Copilot是阿里云操作系统团队基于大模型构建的OS智能助手。它具有自然语言问答、辅助命令执行、系统运维调优等功能,帮助用户更好地使用Linux,提升阿里云的使用体验。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
539 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
8月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
本文内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
692 15
|
8月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
|
6月前
|
人工智能 Kubernetes Cloud Native
Higress(云原生AI网关) 架构学习指南
Higress 架构学习指南 🚀写在前面: 嘿,欢迎你来到 Higress 的学习之旅!
2059 0
|
10月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1571 39
|
9月前
|
存储 Linux 容器
【Container App】在容器中抓取网络包的方法
本文介绍在Azure Container App中安装tcpdump抓取网络包,并通过Storage Account上传抓包文件的方法。内容包括使用curl和nc测试外部接口连通性、长Ping端口、安装tcpdump、抓取网络包、以及通过crul命令上传文件至Azure Storage。适用于需要分析网络请求和排查网络问题的场景。
261 0
|
9月前
|
运维 监控 Cloud Native
从“守机器”到“写策略”——云原生架构把运维逼成了架构师
从“守机器”到“写策略”——云原生架构把运维逼成了架构师
218 1
|
11月前
|
人工智能 Cloud Native 容灾
深圳农商银行三代核心系统全面投产 以云原生架构筑牢数字化转型基石
深圳农商银行完成第三代核心系统全面上云,日均交易超3000万笔,峰值处理效率提升2倍以上。扎根深圳70余年,与阿里云共建“两地三中心”分布式云平台,实现高可用体系及全栈护航。此次云原生转型为行业提供可复制样本,未来将深化云计算与AI合作,推动普惠金融服务升级。
744 17
|
11月前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
502 4
|
11月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.30.10M - 针对云原生环境设计的容器化网络操作系统
338 0

热门文章

最新文章