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

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,每月免费额度200元 3个月
云服务器 ECS,u1 4核16GB 1个月
简介: 《云原生网络数据面可观测性最佳实践》——二、全景剖析阿里云容器网络数据链路——1. Flannel 模式架构设计(下)

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

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


5) 场景四:ExternalTrafficPolicy为Local时,Client来自于集群外

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

A.访问SVC External IP,ExternalTrafficPolicy 为Local时, Client和服务端Pod部署于不同ECS,其中client为集群外

环境

image.png

 

Deployment为nginx1,分别为三个pod nginx1-76c99b49df-4zsdj和nginx1-76c99b49df-7plsr 部署在 ap-southeast-1.10.0.1.206ECS上,最后一个pod nginx1-76c99b49df-s6z79 部署在其他节点ap-southeast-1.10.0.1.216 上

Service nginx1的ExternalTrafficPlicy 为Local

image.png内核路由

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

SLB相关配置

从SLB控制台,可以看到SLB后端的虚拟服务器组中只有两个ECS节点ap-southeast-1.10.0.1.216和ap-southeast-1.10.0.1.206。集群内的其他节点,比如 ap-southeast-1.10.0.0.180 并未被加到SLB的后端虚拟服务器组中。虚拟服务器组的IP 为ECS的IP,端口为service里面的nodeport端口32580

image.png

 

故ExternalTrafficPolicy为Local模式下,只有有Service后端pod所在的ECS节点才会被加入到SLB的后端虚拟服务器组中,参与SLB的流量转发,集群内的其他节点不参与SLB的转发

SLB虚拟服务器组ECS的IPVS规则

从SLB的虚拟服务器组中的两个ECS可以看到,对于nodeip+nodeport的ipvs转发规则是不同。ExternalTrafficPolicy为Local模式下,只有该节点上的护短pod才会被加到该节点的ipvs转发规则中,其他节点上的后端pod不会加进来,这样保证了被SLB转发的链路,只会被转到该节点上的pod,不会转发到其他节点上。

 

node1: ap-southeast-1.10.0.1.206

image.png

 

node1: ap-southeast-1.10.0.1.216

image.png

 

小结

可以访问到目的端

数据链路转发示意图:

image.png

该图示意了只有后端pod所在ECS才会加到SLB后端中,从集群外部访问SVC的externalIP(SLB IP)的情况,可见数据链路只会被转发到虚拟服务器组中的ECS,不会再被转发到集群内其他节点上。

 

内核协议栈示意图

image.png 

Conntack 表信息

 

Node:

src是集群外部客户端IP,dst是节点IP,dport是SVC中的nodeport。并且期望是由该ECS上的pod 172.23.96.82 来回包给源端

 image.png

 

数据链路:client -> SLB->ECS eth0 +ECS nodeport -> cni0 -> vethxxxxx ->ECS1 Pod1 eth0

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

ExternalTrafficPolicy为Local模式下,只有有Service后端pod所在ECS节点才会被加入到SLB后端虚拟服务器组中,参与SLB流量转发,集群内其他节点不参与SLB转发

 

6) 场景五:ExternalTrafficPolicy为Cluster时,Client来自于集群外

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

访问SVCExternal IP,ExternalTrafficPolicy 为Cluster时, Client和服务端Pod部署于不同ECS,其中client为集群外

环境

 image.png

 

Deployment为nginx1,分别为三个pod nginx1-76c99b49df-4zsdj和nginx1-76c99b49df-7plsr 部署在 ap-southeast-1.10.0.1.206ECS上,最后一个pod nginx1-76c99b49df-s6z79 部署在其他节点ap-southeast-1.10.0.1.216 上

Service nginx2的ExternalTrafficPlicy 为Cluster

 image.png

内核路由

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

SLB相关配置

从SLB控制台,集群内所有节点ap-southeast-1.10.0.0.180、ap-southeast-1.10.0.1.216和ap-southeast-1.10.0.1.206都被加到SLB的虚拟服务器组中。其中虚拟服务器组的IP 为ECS的IP,端口为service里面的nodeport端口30875

 image.png

 

故ExternalTrafficPolicy为CLuster模式下,集群内所有的ECS节点都会被加入到SLB的后端虚拟服务器组中,参与SLB的流量转发。

SLB虚拟服务器组ECS的IPVS规则

从SLB的虚拟服务器组中的可以看到,对于nodeip+nodeport的ipvs转发规则是一致的。ExternalTrafficPolicy为CLuster模式下,所有的service后端pod都会被加到所有节点的ipvs的转发规则中,即使是该节点有后端pod,流量也不一定会被转发到该节点上pod,可能会被转发到其他节点上的后端pod。

 

node1: ap-southeast-1.10.0.1.206 (该节点有后端pod)

image.png

 

node1: ap-southeast-1.10.0.1.216 (该节点有后端pod)

image.png

 

node3: ap-southeast-1.10.0.0.180 (该节无后端pod)

image.png


小结

可以访问到目的端

数据链路转发示意图:

 image.png

 

该图示意了集群内所有ECS都会被加到SLB后端中,从集群外部访问SVC的externalIP(SLB IP)的情况,数据流量可能会被转发到其他节点上

 

内核协议栈示意图 

内核协议栈示意图已经在 2.4 场景一中已经做了详细描述,此处不再过多篇幅描述。

 

Conntack 表信息

 

链路1:

ap-southeast-1.10.0.0.180:

此时数据链路对应示意图中的链路1,可以看到数据链路被转到ap-southeast-1.10.0.0.180节点,该节点上并没有service的后端pod,通过conntrack 信息,可以看到

src是集群外部客户端IP,dst是节点IP,dport是SVC中的nodeport。并且期望是172.23.96.163 来回包给 10.0.0.180。通过前述信息,可以得知172.23.96.163 是nginx1-76c99b49df-7plsrPod,部署在ap-southeast-1.10.0.1.206

image.png

 

ap-southeast-1.10.0.1.206:

通过此节点conntrack 表,可以看到src是node ap-southeast-1.10.0.0.180,dst是172.23.96.163的80 端口,回包也是直接回给 node ap-southeast-1.10.0.0.180

image.png 

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

 

链路2:

src是集群外部客户端IP,dst是节点IP,dport是SVC中的nodeport。并且期望是由该ECS上的pod 172.23.96.82 来回包给172.23.96.65,此地址是SLB集群中的一个地址

image.png 

数据链路:

情景一:client -> SLB->ECS eth0 +ECS nodeport -> cni0 -> vethxxxxx ->ECS1 Pod1 eth0

情景二:client -> SLB->ECS1 eth0 +ECS1 nodeport-> VPC Routing ->ECS2 eth0 +Pod port -> cni0 -> vethxxxxx ->ECS2 Pod1 eth0

数据链路要经过三次内核协议栈,分别是ECS1 OS、ECS2 OS协议栈Pod协议栈

ExternalTrafficPolicy为CLuster模式下,kubernetes所有ECS节点都会被加入到SLB后端虚拟服务器组中,参与SLB流量转发,此时会存在数据路在集群内被多个ECS转发场景,该情况下会丢失真实客户端IP情况

 

7) 小结

本节主要聚焦ACK 在Flannel模式下,不同SOP场景下的数据链路转发路径。随着微服务化和云原生化,网络场景日趋复杂,作为kubernetes原生的网络模型——Flannel,不同的访问环境,一共可以分为10个SOP场景。通过深入简出的剖析,可以归纳为5个场景,并对这五个场景的转发链路,技术实现原理,云产品配置等一一梳理并总结,这对我们遇到Flannel架构下的链路抖动、最优化配置,链路原理等提供了初步指引方向。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 弹性计算 监控
【阿里云云原生专栏】成本优化策略:在阿里云云原生平台上实现资源高效利用
【5月更文挑战第29天】本文探讨了在阿里云云原生平台上实现资源高效利用和成本优化的策略。通过资源监控与评估,利用CloudMonitor和Prometheus等工具分析CPU、内存等使用情况,识别浪费。实施弹性伸缩策略,利用自动伸缩规则根据业务负载动态调整资源。借助容器化管理和Kubernetes编排提高资源利用率,优化存储选择如OSS、NAS,以及网络配置如VPC和CDN。示例展示了如何使用Kubernetes的HorizontalPodAutoscaler进行弹性伸缩,降低成本。
130 4
|
10天前
|
Kubernetes Cloud Native 开发者
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
**阿里云发布开源版ALB控制器v1.2.0,对齐商业版ALB Ingress Controller v2.10.0。新版本增强了功能特性,提升了用户体验,并提供了最佳实践。功能更新包括自定义标签、QUIC协议支持、转发规则和安全策略等。此外,还引入了ReadinessGate实现滚动升级时的平滑上线和Prestop钩子确保平滑下线。用户可从GitHub获取开源代码,通过Docker Hub拉取镜像,开始使用alibaba-load-balancer-controller v1.2.0。**
93 3
阿里云网络发布 alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
|
1天前
|
SQL 存储 运维
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构
随着网易游戏品类及产品的快速发展,游戏数据分析场景面临着越来越多的挑战,为了保证系统性能和 SLA,要求引入新的组件来解决特定业务场景问题。为此,网易游戏引入 Apache Doris 构建了全新的湖仓一体架构。经过不断地扩张,目前已发展至十余集群、为内部上百个项目提供了稳定可靠的数据服务、日均查询量数百万次,整体查询性能得到 10-20 倍提升。
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构
|
10天前
|
人工智能 自然语言处理 算法
阿里云PAI大模型评测最佳实践
在大模型时代,模型评测是衡量性能、精选和优化模型的关键环节,对加快AI创新和实践至关重要。PAI大模型评测平台支持多样化的评测场景,如不同基础模型、微调版本和量化版本的对比分析。本文为您介绍针对于不同用户群体及对应数据集类型,如何实现更全面准确且具有针对性的模型评测,从而在AI领域可以更好地取得成就。
|
29天前
|
存储 运维 5G
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架构演进为 All in [Apache Doris](https://c.d4t.cn/vwDf8R) 的实时/离线一体化架构,并凭借 Doris 联邦查询能力打造统一查询网关,数据处理及查询链路大幅简化,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率全方位的提升。
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
|
8天前
|
存储 弹性计算 安全
构建高效企业应用架构:阿里云产品组合实践深度解析
该方案展现了阿里云产品组合的强大能力和灵活性,不仅满足了当前业务需求,也为未来的扩展打下了坚实的基础。希望本文的分享能为读者在设计自己的IT解决方案时提供一定的参考和启发。
107 1
|
8天前
|
Kubernetes Cloud Native 开发者
阿里云网络发布云原生网关 alibaba-load-balancer-controller v1.2.0,持续拥抱开源生态
alibaba-load-balancer-controller开源版本正式推出v1.2.0,能力对齐ALB Ingress Controller商业版v2.10.0。
|
2天前
|
弹性计算 Oracle 关系型数据库
技术好文共享:谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
技术好文共享:谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
|
4天前
|
NoSQL Java 数据库
优化基于阿里云的微服务架构下的数据库访问性能
在应对大型电商项目中数据库访问性能瓶颈问题时,团队通过阿里云工具分析发现高QPS、慢查询和不合理数据交互是关键。优化措施包括:1) 索引优化,针对慢查询添加或调整索引;2) 开启读写分离,使用RDS读写分离功能和DRDS进行水平拆分;3) 引入Redis缓存热点数据,减少直接数据库访问;4) 服务化数据访问,降低跨服务数据库调用;5) 使用Sentinel进行限流和熔断,保护数据库资源。这些改进显著提升了系统响应速度和用户体验。