容器网络-Underlay和Overlay

2023-11-11 16:36
文章标签 网络 容器 overlay underlay

本文主要是介绍容器网络-Underlay和Overlay,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、主机网络

前面讲了容器内部网络,但是容器最终是要部署在主机上,跨主机间的网络访问又是怎么样的,跨主机网络主要有两种方案。

二、 Underlay

使用现有底层网络,为每一个容器配置可路由的网络IP。也就是说容器网络和主机网络没什么区别,主机都能识别容器ip。

2.1 部署

  1. 采用Linux 网桥设备(sbrctl),通过物理网络连通容器;
  2. 创建新的网桥设备 mydr0;
  3. 将主机网卡加入网桥;
  4. 把主机网卡的地址配置到网桥,并把默认路由规则转移到网桥mydr0;
  5. 启动容器;
  6. 创建veth对,并且把一个 peer 添加到网桥 mydr0;
  7. 配置容器把veth的另一个peer分配给容器网卡;

2.1 架构图

在这里插入图片描述

Underlay网络使用现有底层网络,为每一个容器配置可路由的网络IP。但是有一个局限性,我们知道容器会使用很多的ip,如果使用Underlay网络,会占用很多底层网络的ip,所以,使用Underlay网络需要提前合理规划ip分配。

三、Overlay

Overlay网络是通过网络封包技术实现的。

3.1 VXLAN

在这里插入图片描述
在每个主机上都有一个VTEP设备,用于对原始数据包的封包和解包。
在这里插入图片描述

VTEP设备对容器发送的原始数据包进行了以下“包装”:

  1. VXLAN Header
    增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN
    Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。
  2. UDP Header VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN
    Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
  3. Outer IP Header 封装外层IP头。其中,源IP地址(Outer Src.
    IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。
  4. Outer MAC Header 封装外层以太头。其中,源MAC地址(Src. MAC
    Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC
    Addr.)为到达目的VTEP的路径中下一跳设备的MAC地址。

3.2 Flannel

Flannel网络插件使用的就是VXLAN技术
在这里插入图片描述
flanneld相当于VTEP设备,用来封包解包。

这篇关于容器网络-Underlay和Overlay的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/391410

相关文章

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D