K8s的网络——Underlay和Overlay网络

0. 基础知识

1)网络7层基础知识

在网络7层协议基础里,

  • 第一层物理链路;
  • 第二层是数据链路层,在第一层的基础上引入MAC地址做数据转发。MAC地址在局域网内具有唯一性,主机A发送数据时,会向局域网内进行广播,每个主机根据mac地址自动匹配。网桥、交换机都是工作在数据链路层。由MAC地址构建的网络可以叫以太网。在网络中接入设备数据剧增后,要维护一张MAC地址表变得非常巨大,无法得以实施,引出了网络层。
  • 第三层是网络层,IP地址模型。消息传递的时候,先通过IP确定两台主机是不是在同一个子网,如果在同一个子网,就直接交给交换机通过MAC地址通信;如果不是同一个子网,则将报文发送网关地址。发送给网关前,会通过ARP协议获取网关的MAC地址,主机根据MAC封装以太帧发送。
  • IP数据包经过路由器后,一般是不会修改IP的(除非NAT转换),但是MAC地址会发生变化。 每经过一个路由器,MAC发生一次变化。

2)多台主机公用一个公网IP是怎么定位的

一台主机发送信息时,网关有一套路由规则将目标IP解析到一个端口中,当源IP要出局域网时,要通过NAT协议转换为公网IP,到达目的网关时,目的网关通过NAT将目标IP变成当前局域网IP。

3)LAN,VLAN和VXLAN

  • LAN 表示 Local Area Network,本地局域网。一个 LAN 中的所有成员都会收到任意一个成员发出的广播包。LAN变大后,同步广播信息会造成链路冲突堵塞,所以交换机将大的LAN切分成多个小的逻辑LAN。
  • VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。交换机用于实现VLAN;每个交换机端口都分配有一个VLAN。
  • VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。
  • 为什么要VXLAN:
    • 突破VLAN ID数量限制。

    • 突破TOR交换机MAC地址表限制:之前TOR(Top Of Rack)交换机的一个端口连接一个物理主机对应一个MAC地址,但现在交换机的一个端口虽然还是连接一个物理主机但是可能进而连接几十个甚至上百个虚拟机和相应数量的MAC地址。

    • 突破单条网络链路。VxLAN通过UDP封装,在三层网络上传输,可以利用一些基于三层的协议来实现多条线路共同工作(active-active),以实现负载均衡,例如ECMP,LACP。

4)网桥

网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。

当使用网桥连接两段LAN时,网桥对来自网段1的MAC 帧,首先要检查其终点地址。如果该帧是发往网段1 上某一站的,网桥则不将帧转发到网段2 ,而将其滤除;如果该帧是发往网段2 上某一站的,网桥则将它转发到网段2。

网桥的缺点:

  • 网桥对接收的帧要先存储和查找站表,然后转发,这就增加了时延。
  • 网络上负荷很重时,可能因网桥缓冲区的存储空间不够而发生溢出,以致产生帧丢失的现象。
  • 具有不同MAC子层的网段桥接在一起时,网桥在转发一个帧之前,必须修改帧的某些字段的内容,以适合另一个MAC子层的要求,增加时延
  • 网桥只适合于用户数不太多(不超过几百个)和信息量不太大的局域网,否则有时会产生较大的广播风暴。

1.Underlay网络

underlay网络是底层物理网络,负责网络之间的数据包传递。

在underlay网络中,各个设备之间必须通过路由协议来保证IP之间的连接性。underlay网络可以是2层,也可以是三层网络。2层网络通常应用于以太网,通过VLAN进行划分。三层网络在同一个自治域使用OSPF、IS-IS等协议进行路由控制,各个域之间采用BGP等协议做路由传递和互联。

underlay在一个较好的可用环境网络场景下适用,也有一些问题:

  • 由于硬件根据目的IP进行转发,传输路径依赖是非严重;
  • 新增或变更网络,重新配置十分耗时;
  • 网络切片和分段实现负载,无法做到网络资源按需分配;
  • 多路径转发依赖路由,无法融合多个底层网络来实现负载;

2.Overlay网络

为了摆脱underlay网络的限制,采用网络虚拟化技术,在underlay网络上构建虚拟的overlay网络。

互相连接的overlay网络设备之间建立隧道,数据包传输出去时,设备为数据包添加新的IP头好隧道头部,并且屏蔽掉内层IP头部,数据包根据新的IP头部进行转发。当数据包到达目的设备后,外部的IP都和隧道头被丢弃,恢复出原始的数据包。

overlay网络协议标准包括:VXLAN,NVGRE,SST,NVO3,EVPN等。

对比项

Underlay网络

Overlay网络

数据传输

通过网络设备例如路由器、交换机进行传输

沿着节点间的虚拟链路进行传输

包封装和开销

发生在网络的二层和三层

需要跨源和目的封装数据包,产生额外的开销

报文控制

面向硬件

面向软件

部署时间

上线新服务涉及大量配置,耗时多

只需更改虚拟网络中的拓扑结构,可快速部署

多路径转发

因为可扩展性低,所以需要使用多路径转发,而这会产生更多的开销和网络复杂度

支持虚拟网络内的多路径转发

扩展性

底层网络一旦搭建好,新增设备较为困难,可扩展性差

扩展性强,例如VLAN最多可支持4096个标识符,而VXLAN则提供多达1600万个标识符

协议

以太网交换、VLAN、路由协议(OSPF、IS-IS、BGP等)

VXLAN、NVGRE、SST、GRE、NVO3、EVPN

多租户管理

需要使用基于NAT或者VRF的隔离,这在大型网络中是个巨大的挑战

能够管理多个租户之间的重叠IP地址

overlay网络的缺点:

  • 性能问题:Overlay网络使用VXLAN协议实现跨主机通信,会增加数据包的传输延迟,对网络性能有一定影响。
  • 配置复杂:Overlay网络的配置比较复杂,需要进行多个配置步骤。
  • 容易出错:由于Overlay网络的配置比较复杂。

3. docker 构建overlay网络

  1. TCP 端口 2377,用来集群管理相关的通信;
  2. TCP 和 UDP 端口 7946,用来进行节点之间的通信;
  3. UDP 端口 4789,用来进行进行 overlay 网络上的数据传输。

-- 在主节点初始化docker swarm

docker swarm init

-- 在从节点加入swarm集群

    docker swarm join --token SWMTKN-1-3e3cne19my7mcmtv8u3v74j0pvyqbyk0yt2rzp48rozftoobh3-0h0pbf3bxxkqeqk9axfqetfux 172.30.171.123:2377

-- 在任意节点查看swarm

docker info

-- 在主节点创建一个overlay网络

docker network create overlaynet1 --driver overlay --subnet 172.45.0.0/16 --gateway 172.45.0.1

-- 查看swarm群节点

docker node ls

如果创建swarm集群服务,没有指定网络,将会默认连接到ingress网络。建议可以为每个系统的工作应用单独创建overlay网络。

-- 创建docker容器服务测试

docker service create -t --replicas 2 --network overlaynet1 --name alpine-overlay2 alpine:latest

-- 在主节点可以查看

-- 在从节点,可以看到有容器启动起来

-- 删除服务和删除网络

docker service rm my-nginx

docker network rm nginx-net

4. K8s的网络通信模式

1)overlay 网络&underlay 网络

  • overlay网络
    • flannel vxlan, calico bgp, calico vxlan
    • 将pod地址信息封装在宿主机地址信息内,可以实现跨node子网通信。
  • underlay网络
    • calico 
    • 为pod启动单独的虚拟机网络,透传给宿主机的物理网络。

2)K8s网络组件

  • flannel 组件
    • flannel的基本原理是:借助etcd维护网络IP地址分配,为每一个pod分配一个不同的IP,容器之间网络通过隧道进行通信。
    • Cni0网桥设备,每创建一个pod都会创建一对veth pair,其中一端是pod的eth0,另一端是网桥中的网卡端口。

  • Calico
    • Calico 是一个用于容器、虚拟机和主机的纯三层开源网络组建,使用BGP协议。
    •  IPIP模式:是一种隧道协议,也是一种overlay网络;
    • BGP模式:是一种路由协议,通过在每个节点运行BGP代理来实现容器间的通信。

3)为什么需要overlay网络

当前,越来越多的任务是跑在虚拟机上,而虚拟机会发生迁移(从一台物理服务器迁移到另一台),为保障业务不中断,要求虚拟机迁移过程后IP地址保持不变,但实际底层的物理链路可能已发生变化,需要overlay网络和集群虚拟机构建大二层网络。

5. K8s pod的网络抓包

1)网络基础知识

在Linux中,网络命名空间是独立的、隔离的逻辑空间;可通过lsns查看命名空间

集群中的每个 pod 都有一个在后台运行的隐藏容器,被称为 pause,负责创建和维持网络命名空间。

  • 创建pod时,CNI会创建一个带有pause容器的网络命名空间;
  • pod中所有的容器都会加入到创建的网络命名空间中
  • CNI分配IP地址并将容器连接到网络

2)k8s的pod网络原则

  • 集群中的pod都能与任何其他pod通信,无需使用网络地址转换;
  • 集群节点上运行的任意程序都与同一节点上的任意pod通信
  • 每个pod都有自己的IP地址。

2) 网络基础

深入理解lan、vlan、vxlan《OpenStack 网络》-阿里云开发者社区

百度百科-验证

什么是Overlay网络? Overlay网络 vs Underlay网络 - 华为

k8s 小记 - 网络_莫测之境的技术博客_51CTO博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/139183.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode-简单题】589. N 叉树的前序遍历

文章目录 题目方法一:单循环栈做法方法二:递归 题目 方法一:单循环栈做法 关键在于子节点的入栈顺序,决定了子节点的出栈顺序, 因为是前序遍历 所以压栈顺序先让右边的入栈 依次往左 这样左边的节点会在栈顶 这样下次…

小白的入门二叉树(C语言实现)

前言: 二叉树属于数据结构的一个重要组成部分,很多小白可能被其复杂的外表所吓退,但我要告诉你的是“世上无难事,只怕有心人”,我将认真的对待这篇博客,我相信只要大家敢于思考,肯定会有所收获…

成都瀚网科技:抖音提供差异化​​亮点!

在抖音平台上,精选联盟是一个专门为优质品牌提供展示和推广机会的合作项目。对于斗店主来说,如何成功对接精选联盟并实现上市是一个重要目标。在这篇文章中,我们将分享一些豆点与精选联盟对接的方法,并提供上币指南。 1、提升店铺…

2023 蓝帽杯初赛web部分取证复现

前言&#xff1a;初赛进线下了&#xff0c;计划着在决赛前突击学习一下取证&#xff0c;但时间还是太紧 只看了很多内存取证和手机取证 计算机取证和服务器取证没掌握 ---( 不过复赛没考&#xff0c;也算狗运了) 目录 <1> web-LovePHP(file()函数侧信道攻击) <2&g…

基于微信小程序的美术馆预约平台设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

【LeetCode热题100】--53.最大子数组和

53.最大子数组和 使用动态规划&#xff1a; 状态定义&#xff1a;设动态规划列表dp&#xff0c;dp[i]代表以元素nums[i]为结尾的连续子数组最大和 转移方程&#xff1a;若dp[i-1]≤0,说明dp[i-1]对dp[i]产生负贡献&#xff0c;即dp[i-1]nums[i]还不如nums[i]本身大 初始状态&…

Redis GEO 类型与 API 结合,地理位置优化的绝佳实践

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

基于PHP语言研发的抖音矩阵系统源代码开发部署技术文档分享

一、概述 本技术文档旨在介绍抖音SEO矩阵系统源代码的开发部署流程&#xff0c;以便开发者能够高效地开发、测试和部署基于PHP语言的开源系统。通过本文档的指引&#xff0c;您将能够掌握抖音SEO矩阵系统的开发环境和部署方案&#xff0c;从而快速地构建出稳定、可靠的短视频S…

网络爬虫-----爬虫的分类及原理

目录 爬虫的分类 1.通用网络爬虫&#xff1a;搜索引擎的爬虫 2.聚焦网络爬虫&#xff1a;针对特定网页的爬虫 3.增量式网络爬虫 4.深层网络爬虫 通用爬虫与聚焦爬虫的原理 通用爬虫&#xff1a; 聚焦爬虫&#xff1a; 爬虫的分类 网络爬虫按照系统结构和实现技术&#…

竞赛选题 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的植物识别算法 ** …

vue3硅谷甄选01 | 使用vite创建vue3项目及项目的配置 环境准备 ESLint配置 prettier配置 husky配置 项目集成

文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…

PIL或Pillow学习2

接着学习下Pillow常用方法&#xff1a; PIL_test1.py : 9, Pillow图像降噪处理由于成像设备、传输媒介等因素的影响&#xff0c;图像总会或多或少的存在一些不必要的干扰信息&#xff0c;我们将这些干扰信息统称为“噪声”&#xff0c; 比如数字图像中常见的“椒盐噪声”&…

Postman使用_接口导入导出

文章目录 Postman导入数据Collections导出数据Environments导出数据Postman导出所有数据 Postman导入数据 可以导入collections&#xff08;接口集&#xff09;、Environments&#xff08;环境配置&#xff09;通过分享的链接或导出的JSON文件导入数据&#xff08;还可以从第三…

Pixea Plus for Mac:极简图片浏览,高效图片管理

在处理和浏览图片时&#xff0c;我们往往需要一个得心应手的工具&#xff0c;尤其是当你的图片库包含了各种不同格式&#xff0c;例如JPEG、HEIC、psd、RAW、WEBP、PNG、GIF等等。今天&#xff0c;我们要推荐的&#xff0c;就是一款极简、高效的Mac图片浏览和管理工具——Pixea…

Crazy Excel:Excel中的泥石流

Crazy Excel又名&#xff1a;疯狂Excel。是一款PC端的Excel软件工具&#xff0c;该软件支持windows, mac os等主流操作系统。 正如其名&#xff0c;作者在设计之初就加入了一些疯狂的设计&#xff0c;目的是创作出更加好用有效的excel工具。 不管是专业还是小白&#xff0c;…

前后台分离开发 YAPI平台 前端工程化之Vue-cli

目录 YAPI介绍前端工程化之Vue-cli前端工程化简介前端工程化入门——Vue-cli环境准备Vue项目简介创建Vue项目vue项目目录结构介绍vue项目运行方法 Vue项目开发流程 前后台混合开发这种开发模式有如下缺点&#xff1a; 沟通成本高&#xff1a;后台人员发现前端有问题&#xff0…

【Redis】第5讲 Redis的下载并安装

下载Redis中文网https://www.redis.net.cn/ 百度网盘下载&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://p…

malloc与free

目录 前提须知&#xff1a; malloc&#xff1a; 大意&#xff1a; 头文件&#xff1a; 申请空间&#xff1a; 判断是否申请成功&#xff1a; 使用空间&#xff1a; 结果&#xff1a; 整体代码&#xff1a; malloc申请的空间怎么回收呢? 注意事项&#xff1a; free:…

VirtualBox Win7 虚拟机 共享文件夹设置

系统配置 VirtualBox虚拟机版本&#xff1a;6.1.46 主机Host&#xff1a;Win11 虚拟机&#xff1a;Win7-32位 添加虚拟光驱 为虚拟机添加虚拟光驱&#xff0c;光驱中导入VBoxGuestAdditions.iso文件。 该文件默认路径为&#xff1a; X:\Program Files\Oracle\VirtualBox\V…

Nmap安装和使用详解

Nmap安装和使用详解 Nmap概述功能概述运行方式 Nmap安装官方文档参考&#xff1a;Nmap参数详解目标说明主机发现端口扫描Nmap将目标主机端口分成6种状态&#xff1a;Nmap产生结果是基于机器的响应报文&#xff0c;而这些主机可能是不可信任的&#xff0c;会产生一些迷惑或者误导…