当前位置: 首页 > news >正文

Flannel Host-gw模式的优缺点

Host-gw 模式的特点、优缺点

优点

  • 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。
  • 零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。
  • 配置简单:只需配置路由表,部署和维护成本低,适合快速搭建。
  • 轻量级:对 CPU 和内存的资源占用极低,适合资源受限环境。

缺点

  • 二层网络限制:要求所有节点在同一二层网络(同一子网),不支持跨三层网络通信。
  • 扩展性有限:不适合跨数据中心或大规模分布式集群,因无法跨越 L3 网络。
  • 缺乏隔离:不像 VXLAN 提供 VNI 隔离,难以实现多租户网络分割。
  • 依赖物理网络:性能和稳定性受底层物理网络限制(如交换机配置)。

跨节点通信的具体实现

Host-gw(Host Gateway)模式通过主机路由表直接转发数据包,无需封装,依赖二层网络连通性。以下是详细流程:

1. 网络架构概述

  • Pod IP 分配:Flannel 为每个节点分配一个子网(如 10.244.x.0/24),Pod 从该子网获取 IP 地址。
  • etcd 存储:Flannel 使用 etcd 存储网络配置,包括每个节点的子网和物理 IP 地址。
  • 路由表管理:Flannel 在每个节点配置静态路由,将目标子网映射到对应节点的物理 IP,数据包通过物理网络直接转发。

2. 通信流程

假设 Pod A(IP: 10.244.1.2,节点 1)向 Pod B(IP: 10.244.2.3,节点 2)发送数据包:

  1. 数据包生成

    • Pod A 生成数据包,源 IP 为 10.244.1.2,目标 IP 为 10.244.2.3。
    • 数据包通过 Pod 的虚拟网卡(如 veth)发送到节点 1 的 CNI 桥接(如 cni0)。
  2. 路由决策

    • 节点 1 的路由表(由 Flannel 配置)识别目标 IP 10.244.2.3 属于节点 2 的子网(10.244.2.0/24)。
    • 路由规则指定数据包的下一跳为节点 2 的物理 IP(如 192.168.1.11)。
    • 数据包直接通过节点 1 的物理网卡发出,无需封装。
  3. 网络传输

    • 数据包通过底层二层网络(同一子网,如 192.168.1.0/24)从节点 1(192.168.1.10)传输到节点 2(192.168.1.11)。
    • 传输依赖物理交换机的 ARP 解析,节点 1 通过 ARP 获取节点 2 的 MAC 地址,将数据包封装为以太网帧(源 MAC: 节点 1,目标 MAC: 节点 2)。
  4. 接收和转发

    • 节点 2 的物理网卡接收数据包,内核根据目标 IP(10.244.2.3)查询本地路由表。
    • 路由表将数据包转发到节点 2 的 CNI 桥接(如 cni0),最终送达 Pod B 的虚拟网卡。
    • Pod B 接收到数据包,完成通信。

3. 关键技术细节

  • 路由表配置
    • Flannel 通过 etcd 获取每个节点的子网和物理 IP,动态更新路由表。
    • 示例路由(节点 1):
      10.244.2.0/24 via 192.168.1.11 dev eth0
      
      表示目标子网 10.244.2.0/24 的数据包通过物理接口 eth0 转发到节点 2(192.168.1.11)。
  • ARP 解析
    • 节点 1 需要节点 2 的 MAC 地址,通过 ARP 请求广播获取。
    • 二层网络确保 ARP 广播 Oldman’s principle applies: Cum recte intellegi possit, cur non opus perfectum sit.
    • 通信依赖二层网络的连通性,主机间通过物理交换机直接传递以太网帧。
  • 无 MTU 调整
    • 因无封装,host-gw 模式不增加头部开销,MTU 保持物理网络默认值(通常 1500 字节),无需调整。
  • 性能优化
    • 无封装/解封装,CPU 开销极低,仅涉及路由表查询和 ARP 解析。
    • 性能受物理交换机转发能力和网络带宽限制。

4. 通信示意图

Pod A (10.244.1.2) -> cni0 (节点 1) -> 路由表 -> 物理网卡 (192.168.1.10 -> 192.168.1.11)
-> 物理网卡 (节点 2) -> cni0 -> Pod B (10.244.2.3)

总结

  • Host-gw 的优势在于高性能和零开销,适合小型、单数据中心内的 Kubernetes 集群,但受限于二层网络,无法跨 L3 网络或提供隔离。
  • 跨节点通信通过静态路由和二层网络直接转发数据包,Flannel 利用 etcd 动态配置路由表,依赖物理交换机的 ARP 和以太网帧传输。

相关文章:

Flannel Host-gw模式的优缺点

Host-gw 模式的特点、优缺点 优点 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。配置简单:只需配置…...

SD-HOST Controller design-----SD CLK 设计

hclk的分频电路,得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟:一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时,fifo_sd_clk等于hclk;当分频时候,div_counter开始计数,记到相应分频的时候…...

zabbix最新版本7.2超级详细安装部署(一)

如果文章对你有用,请留下痕迹在配置过程中有问题请及时留言,本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…...

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(上)

文章目录 引言一、拓扑排序的背景二、BFS算法解决拓扑排序三、应用场景四、代码实现五、代码解释六、总结 引言 在这浩瀚如海的算法世界中,有一扇门,开启后通向了有序的领域。它便是拓扑排序,这个问题的解决方法犹如一场深刻的哲学思考&#…...

【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑

序言 在上篇文章中,我们完成了滚动条组件开发的前期准备工作,包括理论推导、布局规划和基础设置。现在,我们将把这些准备转化为实际代码,开启滚动条组件的具体开发之旅🌟。我们会详细阐述如何实现各项功能&#xff0c…...

题海拾贝:P1833 樱花

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

集成钉钉消息推送功能

1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台&#xff1a;https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…...

texlive 与 Texmaker 安装

一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD &#xff0c;点击 Texmaker_6.0.1_Win_x64.msi &#xff0c;下载即可。 2、安装Texmaker 双击如下文件 若出现如下&#xff0c;点击更多信息 点击仍要运行 …...

Milvus(21):过滤搜索、范围搜索、分组搜索

1 过滤搜索 ANN 搜索能找到与指定向量嵌入最相似的向量嵌入。但是&#xff0c;搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件&#xff0c;这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤&#xff0c;将搜索范围从整个 Collections 缩小到只搜索符合指定过滤条件…...

AD PCB布局时常用的操作命令

1. 框选 往右下方框选&#xff1a;选中矩形接触到的对象&#xff08;选中整体才会被选中&#xff09; 往左上方框选&#xff1a;选中矩形接触到的对象&#xff08;选中局部&#xff0c;也是选中整体&#xff09; 线选&#xff1a;快捷键S&#xff0c;弹出界面&#xff1a; …...

[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...

分析Docker容器Jvm 堆栈GC信息

# 打印jvm启动参数 docker exec -ti <容器名> jcmd 1 VM.flags-XX:CICompilerCount3 -XX:InitialHeapSize1073741824 -XX:MaxHeapSize2147483648 -XX:MaxMetaspaceSize157286400 -XX:MaxNewSize715653120 -XX:MinHeapDeltaBytes524288 -XX:NewSize357564416 -XX:OldSize7…...

Java——集合基础

一、集合与数组的特点对比 1.集合类的特点&#xff1a;提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 2.集合和数组的区别 共同点&#xff1a;都是存储数据的容器不同点&#xff1a;数组的容量是固定的&#xff0c;集合的容量是可变的 3.如果存储…...

spark MySQL数据库配置

Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接&#xff0c;需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码&#xff1a; 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…...

http断点续传

&#x1f6d1; 默认的 http.server&#xff08;Python 的 SimpleHTTPRequestHandler&#xff09;在某些版本和实现中并不可靠地支持 HTTP Range 请求&#xff08;即断点续传&#xff09;。 尤其在 Python 3.7~3.10 之间的某些版本中&#xff0c;这种支持是不完整或不可预测的。…...

# YOLOv3:基于 PyTorch 的目标检测模型实现

YOLOv3&#xff1a;基于 PyTorch 的目标检测模型实现 引言 YOLOv3&#xff08;You Only Look Once&#xff09;是一种流行的单阶段目标检测算法&#xff0c;它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性&#xff0c;使其在实时目标检测任…...

Mac修改hosts文件方法

Mac修改hosts文件方法 在 macOS 上修改 hosts 文件需要管理员权限 步骤 1&#xff1a;打开终端 通过 Spotlight 搜索&#xff08;Command 空格&#xff09;输入 Terminal&#xff0c;回车打开。或进入 应用程序 > 实用工具 > 终端。 步骤 2&#xff1a;备份 hosts 文件…...

构建你的第一个简单AI助手 - 入门实践

在当今AI迅速发展的时代&#xff0c;构建自己的AI助手不再是高不可攀的技术壁垒。即使对于刚接触AI开发的程序员&#xff0c;也可以利用现代大语言模型(LLM)API构建功能丰富的AI助手。本文将带您完成一个简单但实用的AI助手构建过程&#xff0c;帮助您在日常工作中提高效率。 …...

Qt在统信UOS及银河麒麟Kylin系统中进行软件开发的环境配置,打包发布和注意事项

前述 之前由于项目的产品需要&#xff0c;必须将原本Windows上的产品移植到信创环境&#xff0c;也就是现在的主流国产操作系统统信UOS及银河麒麟Kylin。 先大概讲下信创系统&#xff1a; 信创系统就像是中国自己打造的 “数字基建”&#xff0c;目的是让咱们国家的信息技术不…...

一个完整的项目示例:taro开发微信小程序

前一周完成了一个项目&#xff0c;体测成绩转换的工具&#xff0c;没做记录&#xff0c;。这次计划开发一个地图应用小程序&#xff0c;记录一下。方便给使用的人。 一、申请微信小程序&#xff0c;填写相应的信息&#xff0c;取得开发者ID。这个要给腾讯地图使用的。 二、申…...

二次封装 el-dialog 组件:打造更灵活的对话框解决方案

文章目录 引言为什么需要二次封装&#xff1f;封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中&#xff0c;Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中&#xff0c;我们经常会…...

3.2 一点一世界

第一步&#xff1a;引入背景与动机 “一点一世界”这个概念来源于泰勒公式的思想&#xff0c;即通过一个点及其导数信息来近似描述整个函数的行为。这种方法在数学分析中非常有用&#xff0c;因为它允许我们将复杂的函数简化为多项式形式&#xff0c;从而更容易进行计算和理解…...

力扣第156场双周赛

1. 找到频率最高的元音和辅音 给你一个由小写英文字母&#xff08;a 到 z&#xff09;组成的字符串 s。你的任务是找出出现频率 最高 的元音&#xff08;a、e、i、o、u 中的一个&#xff09;和出现频率最高的辅音&#xff08;除元音以外的所有字母&#xff09;&#xff0c;并返…...

学习日志05 java

1 java里面的类型转换怎么做&#xff1f;int转double为例 在 Java 里&#xff0c;把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍&#xff1a; 自动类型转换&#xff08;隐式转换&#xff09; 由于double的取值范围比int大&#xff0c;Java 能够…...

4.7/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Burden of non-COVID-19 lower respiratory infections in China (1990-2021): a global burden of disease study analysis DOI&#xff1a;10.1186/s12931-025-03197-7 中文标题&#xff1a;中国非 COVID-19 下呼吸道感染负担&#xff08;1990-2021 年&a…...

do while

先进再查 import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;do{number number / 10;count count 1;} while( number > 0 );System.out.println(count…...

MySQL 主从复制与读写分离

一、MySQL 主从复制 &#xff08;0&#xff09;概述 MySQL 主从复制是一种数据同步机制&#xff0c;允许数据从一个主数据库&#xff08;Master&#xff09;复制到一个或多个从数据库&#xff08;Slave&#xff09;。其主要用途包括&#xff1a; 数据冗余与灾备&#xff1a;通…...

CSS3 基础知识、原理及与CSS的区别

CSS3 基础知识、原理及与CSS的区别 CSS3 基础知识 CSS3 是 Cascading Style Sheets 的第3个版本&#xff0c;是CSS技术的升级版本&#xff0c;于1999年开始制订&#xff0c;2001年5月23日W3C完成了CSS3的工作草案。 CSS3 主要模块 选择器&#xff1a;更强大的元素选择方式盒…...

第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计

章节引导&#xff1a;在模型定制的实践中&#xff0c;Llama Factory (github.com/hiyouga/LLaMA-Factory) 以其惊人的易用性和对多种开源大模型、多种参数高效微调方法&#xff08;PEFT&#xff09;的广泛支持&#xff0c;迅速成为开源社区的热门选择。你可能已经熟练掌握了如何…...

SpringSecurity当中的CSRF防范详解

CSRF防范 什么是CSER 以下是基于 CSRF 攻击过程的 顺序图 及详细解释&#xff0c;结合多个技术文档中的攻击流程&#xff1a; CSRF 攻击顺序图 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...

CSRF防范歪招

不保存到Cookie里呗 如果每次请求都强制通过请求头携带Token&#xff0c;并且不将Token存储在Cookie中&#xff0c;这种设计可以有效防御CSRF攻击。以下是具体原因和关键实现要点&#xff1a; 1. 防御原理 CSRF攻击的本质是攻击者伪造用户的请求&#xff0c;利用浏览器自动携…...

MyBatis与MyBatis-Plus深度分析

MyBatis与MyBatis-Plus深度分析 一、MyBatis原理与基础 1. MyBatis核心原理 MyBatis是一个半自动ORM框架&#xff0c;主要原理包括&#xff1a; SQL与代码分离&#xff1a;通过XML或注解配置SQL语句动态SQL&#xff1a;提供if、choose、foreach等标签实现动态SQL结果集映射…...

STM32 变量加载到flash的过程中

在STM32中&#xff0c;BIN文件内需要加载到RAM的数据由链接脚本&#xff08;Linker Script&#xff09;​和启动代码&#xff08;Startup Code&#xff09;​共同决定&#xff0c;具体机制如下&#xff1a; 一、BIN文件内容结构 STM32的BIN文件包含三类数据&#xff1a; ​Co…...

TCP核心机制

1. TCP五大核心机制 1.1. 顺序问题&#xff08;稳重不乱&#xff09; 背景&#xff1a;网络传输中数据包可能因路径不同或网络波动导致乱序到达&#xff0c;需保证接收方能按正确顺序处理数据。 原理&#xff1a; 序列号&#xff08;Sequence Number&#xff09;&#xff1…...

6.3对象序列化

在 Java 中&#xff0c;ObjectInputStream 和 ObjectOutputStream 是用于实现对象序列化&#xff08;Serialization&#xff09;和反序列化&#xff08;Deserialization&#xff09;的核心类。通过这两个类&#xff0c;可以将对象转换为字节流进行存储或传输&#xff0c;并在需…...

Flutter小白入门指南

Flutter小白入门指南 &#x1f680; 轻松构建漂亮的跨平台应用 &#x1f4d1; 目录 一、Flutter是什么&#xff1f; 为什么选择Flutter&#xff1f;Flutter工作原理 二、环境搭建与命令行 安装Flutter SDK常用Flutter命令创建第一个项目 三、Flutter基础语法 变量与类型函数条…...

Python -将MP4文件转为GIF图片

给大家提供一个工具代码&#xff0c;使用Python&#xff0c;将MP4格式的视频文件&#xff0c;转换为GIF图片 首先先安装必要的包&#xff1a; pip install imageio pip install imageio[ffmpeg] 工具代码&#xff1a; import imageio# 视频文件路径 video_path r""…...

51c嵌入式~电路~合集27

我自己的原文哦~ 一、7805应用电路 简介 如上图&#xff0c;7805 集成稳压电路。 7805是串联式三端稳压器&#xff0c;三个端口分别是电压输入端&#xff08;IN&#xff09;&#xff0c;地线&#xff08;GND&#xff09;&#xff0c;稳压输出&#xff08;OUT&#xff09;…...

数据结构—(链表,栈,队列,树)

本文章写的比较乱&#xff0c;属于是缝合怪&#xff0c;很多细节没处理&#xff0c;显得粗糙&#xff0c;日后完善&#xff0c;今天赶时间了。 1. 红黑树的修复篇章 2. 红黑树的代码理解&#xff08;部分写道注释之中了&#xff09; 3. 队列与栈的代码 4. 重要是理解物理逻辑&a…...

GitHub 趋势日报 (2025年05月12日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型&#xff0c;一键生成高清短视频使用…...

ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107+ 种语言

​一、软件介绍 文末提供程序和源码下载 ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107 种语言。从电子书到带有章节和元数据的有声读物的 CPU/GPU 转换器&#xff0c;使用 XTTSv2、Bark、Vits、Fairseq、YourTTS …...

《算法导论(第4版)》阅读笔记:p39-p48

《算法导论(第4版)》学习第 13 天&#xff0c;p39-p48 总结&#xff0c;总计 10 页。 一、技术总结 1. recurrence/recurrence equation 书里面 recurrence(递归式) 和 recurrence equation(递归方程) 指的是同一个东西。 二、英语总结(生词&#xff1a;2) 1. squint (1)…...

c语言第一个小游戏:贪吃蛇小游戏07

贪吃蛇吃饭喽 所谓贪吃蛇的食物&#xff0c;也就是创建一个和蛇身一样的结构体&#xff0c;只是这个结构体不是链表&#xff0c;也是将这个结构体设置hang和lie坐标&#xff0c;放进gamepic进行扫描&#xff0c;扫到了就也是做操作将 ## 打出来 #include <curses.h> #i…...

(七)深度学习---神经网络原理与实现

分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高斯混合聚类LDA主题模型 一.神经网络原理概述 二.神经网络的训练方法 三.基于Ker…...

VSCode中Node.js 使用教程

一、visual studio code下载与安装 二、修改vscode主题颜色 三、汉化 菜单view-->Command Palette...,输入Configure Display Language。 重启之后如下&#xff1a; 四、安装node.js Node.js 是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;使用了事件驱动、非阻…...

web 自动化之 KDT 关键字驱动详解

一、什么是关键字驱动&#xff1f; 1、什么是关键字驱动&#xff1f;&#xff08;以关键字函数驱动测试&#xff09; 关键字驱动又叫动作字驱动&#xff0c;把项目业务封装成关键字函数&#xff0c;再基于关键字函数实现自动化测试 2、关键字驱动测试原理 关键字驱动测试是一…...

web 自动化之 yaml 数据/日志/截图

文章目录 一、yaml 数据获取二、日志获取三、截图 一、yaml 数据获取 需要安装 PyYAML 库 import yaml import os from TestPOM.common import dir_config as Dirdef read_yaml(key,file_name"test_datas.yaml"):file_path os.path.join(Dir.testcases_dir, file_…...

基于javaweb的SpringBoot酒店管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

数学复习笔记 6

前言 复习一下行列式的一些基本的题。感觉网课有点没跟上了。今天花点时间跟上网课的进度。要紧跟进度&#xff0c;然后剩下的时间再去复习前面的内容。多复习&#xff0c;提升自己的解题能力。 行列式和矩阵 三年级&#xff0c;我现在是三年级下册。。。马上就要结束大学的…...

JS Map使用方法

JS Map使用方法 Map 是 ES6 引入的一种新的数据结构&#xff0c;它类似于对象&#xff08;Object&#xff09;&#xff0c;但提供了更强大的键值对存储功能。 文章目录 JS Map使用方法基本特性基本用法创建 Map常用方法遍历方法 与 Object 的区别实际应用示例示例1&#xff1a…...