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

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

Flannel 模式下,ECS只有一个主网卡ENI,无其他附属网卡,ECS和节点上的Pod与外部通信都需要通过主网卡进行。ACK Flannel会在每个节点创建cni0虚拟网卡作为Pod网络和ECS的主网卡eth0之间的桥梁。

image.png

image.png

 

集群的每个节点会起一个flannel agent,并且会给每个节点预分配一个Pod CIDR,这个Pod CIDR是ACK集群的Pod CIDR的子集。

image.png

 

容器的网络命名空间内会有一个eth0的虚拟网卡,同时存在下一跳指向该网卡的路由,该网卡会作为容器和宿主内核进行数据交换的出入口。容器和宿主机之间的数据链路是通过veth pair进行交换的,现在我们已经找到veth pair其中一个,如何去找另一个veth呢?

 image.png

image.png 

 

如上图所示,我们可以容器的网络命名空间中通过ip addr 看到一eth0@if8的标志位,其中‘81' 这个将会协助我们在ECS的OS内找到和容器网络命名空间中的veth pair相对一个。在ECS OS 内我们通过ip addr | grep 81: 可以找到vethd7e7c6fd 这个虚拟网卡,这个就是veth pair在ECS OS侧相对的那一个。

 image.png

 

到目前为止容器内和OS 数据链路已经建立链接了,那么ECS OS内对于数据流量是怎么判断去哪个容器呢?

 

通过OS Linux Routing我们可以看到,所有目的是Pod CIDR 网段的流量都会被转发到cni0这张虚拟网卡,那么cni0是通过bridge方式将不同目的数据链路指向到不同的vethxxx。到这里为止,ECS OS和Pod的网络命名空间已经建立好完整的出入链路配置了。

 image.png

 

1) Flannel 模式容器网络数据链路剖析

针对容器网络特点,我们可以将Flannel模式下的网络链路大体分为以Pod IP对外提供服务和以SVC对外提供服务两个大的SOP场景,进一步细分可以拆分到10个不同的小的SOP场景。

 image.png

 

对这10个场景的数据链路梳理合并,这些场景可以归纳为下面5类典型的场景:

 

Client和服务端Pod部署于同一个ECS

Client和服务端Pod部署于不同ECS

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

访问SVC External IPExternalTrafficPolicy 为Local时, Client和服务端Pod部署于不同ECS,其中client为集群内

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

 

2) 场景一:Client和服务端Pod部署于同一个ECS

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

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

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

以SVC ExternalIP对外提供服务,ExternalTrafficPolicy为Cluster/Local情况下,Client和SVC后端Pod部署于同一节点

环境

image.png

 

ap-southeast-1.10.0.0.180节点上存在两个pod:centos-67756b6dc8-rmmxt IP地址172.23.96.23和nginx-7d6877d777-6jkfg和172.23.96.24

内核路由

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

 image.pngimage.png

 

该容器eth0在ECS OS 内对应veth pair是vethd7e7c6fd

image.png

image.png

通过上述类似的办法,可以找到nginx-7d6877d777-6jkfg IP地址172.23.96.24,该容器在宿主机表现的PID是2981608,该容器eth0在ECS OS 内对应veth pair是vethd3fc7ff4image.png

在ECS OS内,有指向Pod CIDR,下一跳为cni0的路由,以及cni0中有两个容器的vethxxx 网桥信息

image.png

image.png 

小结

可以访问到目的端

数据链路转发示意图:

image.png 

  内核协议栈示意图:

 image.png

 

数据链路:ECS1 Pod1 eth0 -> vethxxx1 -> cni0 -> vethxxxx2 ->ECS1 Pod2 eth0

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

 

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

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

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12月前
|
JavaScript
Vue中Axios网络请求封装-企业最常用封装模式
本教程介绍如何安装并配置 Axios 实例,包含请求与响应拦截器,实现自动携带 Token、错误提示及登录状态管理,适用于 Vue 项目。
450 1
|
12月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
1599 0
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
412 3
|
11月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
556 3
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
2850 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1725 0