Kubernetes——CNI网络组件

news2025/1/19 8:17:13

目录

一、Kubernetes三种接口

二、Kubernetes三种网络

三、VLAN与VXLAN

1.VLAN

2.VXLAN 

3.区别

3.1作用不同

3.2vxlan支持更多的二层网络

3.3已有的网络路径利用效率更高

3.4防止物理交换机Mac表耗尽

3.5相对VLAN技术,VXLAN技术具有以下优势

四、CNI网络插件——Flannel

 1.Overlay Network

2.UDP

3.VXLAN

4.Host-gw

5.其他插件

五、总结——CNI网络插件

1.Flannel

2.Calico

2.1Calico的IPIP模式工作原理

2.2Calico的BGP模式工作原理 


一、Kubernetes三种接口

  • CRI:容器运行时接口(Docker、Containerd、Podman、Cri-o)
  • CNI:容器网络接口(Flannel、Calico、Cilium)
  • CSI:容器存储接口(NFS、Ceph、GFS、OSS、S3、Minio)

二、Kubernetes三种网络

  • 节点网络:物理服务器网卡,网卡IP。每个主机网卡的组成,集群节点的网络通信。
  • Pod网络:PodIP 提供给Docker容器使用的IP地址,虚拟IP地址。一个Pod中只有一个IP地址,一个Pod中会共享一个IP地址出去,Pod之间通讯要加网络。Pod与Pod之间可以通过PodIP相互通信。
  • Service网络:ClusterIP Service-IP地址,虚拟IP地址,给Pod提供载体。在K8S集群内可通过Service资源的ClusterIP实现对Pod集群的网络代理转发。

三、VLAN与VXLAN

1.VLAN

做资源的隔离和安全,使用Vlan,资源不够用的时候,使用VLAN,防止广播风暴

2.VXLAN 

VXLAN:虚拟网络技术,将每个电脑作为一个网络标识,都做一个虚拟化的划分,可以划分几万个标识,将每台电脑绑定固定的标识。假设从一楼到三楼的数据通信,VXLAN会将数据包进行封装,将标识符和收件人和寄件人信息封装好,通过网络传给对面。相当于建立了虚拟隧道,不需要借助设备进行。

3.区别

3.1作用不同

  • VLAN主要用作于在交换机上逻辑划分广播域,还可以配合STP生成树协议阻塞路径接口,避免产生环路和广播风暴。
  • VXLAN可以将数据帧封装成UDP报文,再通过网络层传输给其它网络,从而实现虚拟大二层网络的通信

3.2vxlan支持更多的二层网络

  • vlan使用12位bit表示vlanID,因此最多支持2^12=4094个vlan
  • vxlan使用的ID使用24位bit,最多可以支持2^24个个vlan

3.3已有的网络路径利用效率更高

  • vlan使用spanning tree protocol避免环路,会将一半的网络路径阻塞
  • vxlan的数据包封装成UDP通过网络层传输,可以使用所有的网络路径

3.4防止物理交换机Mac表耗尽

  • vlan需要在交换机的Mac表中记录Mac物理地址
  • vxlan采用隧道机制,Mac物理地址不需记录在交换机

3.5相对VLAN技术,VXLAN技术具有以下优势

  • 24位长度的VNI字段值可以支持更多数量的虚拟网络,解决了VLAN数目上限为4094的局限性的问题。
  • VXLAN技术通过隧道技术在物理的三层网络中虚拟二层网络,处于VXLAN网络的终端无法察觉到VXLAN的通信过程,这样也就使得逻辑网络拓扑和物理网络拓扑实现了一定程度的解耦,网络拓扑的配置对于物理设备的配置的依赖程度有所降低,配置更灵活更方便。
  • VLAN技术仅仅解决了二层网络广播域分割的问题,而VXLAN技术还具有多租户支持的特性,通过VXLAN分割,各个租户可以独立组网、通信,地址分配方面和多个租户之间地址冲突的问题也得到了解决。

四、CNI网络插件——Flannel

Flannel 的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。
Flannel 是 Overlay 网络的一种,也是将 TCP 源数据包封装在另一种网络包里面进行路由转发和通信,目前支持 UDPVXLANHost-gw 3种数据转发方式。

 1.Overlay Network

  • 叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来。
  • 通过Overlay技术(可以理解成隧道技术),在原始报文外再包一层四层协议(UDP协议),通过主机网络进行路由转发。这种方式性能有一定损耗,主要体现在对原始报文的修改。目前Overlay主要采用VXLAN。

2.UDP

UDP用户态,就是应用程序封装,通过UDP协议,IP封装,解封装的过程,原理通过FLannel服务进行封装,将UDP封装进去

数据从主机 A 上 Pod 的源容器中发出后,经由所在主机的 docker0/cni0 网络接口转发到 flannel0 接口,flanneld 服务监听在 flannel0 虚拟网卡的另外一端。
Flannel 通过 Etcd 服务维护了一张节点间的路由表。源主机 A 的 flanneld 服务将原本的数据内容封装到 UDP 报文中, 根据自己的路由表通过物理网卡投递给目的节点主机 B 的 flanneld 服务,数据到达以后被解包,然后直接进入目的节点的 flannel0 接口, 之后被转发到目的主机的 docker0/cni0 网桥,最后就像本机容器通信一样由 docker0/cni0 转发到目标容器。 

3.VXLAN

隧道模式,默认配置,利用内核VXLAN来封装主机(host)之间传送数据包

  1. 数据帧从主机 A 上 Pod 的源容器中发出后,经由所在主机的 docker0/cni0 网络接口转发到 flannel.1 接口
  2. flannel.1 收到数据帧后添加 VXLAN 头部,封装在 UDP 报文中
  3. 主机 A 通过物理网卡发送封包到主机 B 的物理网卡中
  4. 主机 B 的物理网卡再通过 VXLAN 默认端口 4789 转发到 flannel.1 接口进行解封装
  5. 解封装以后,内核将数据帧发送到 cni0,最后由 cni0 发送到桥接到此接口的容器 B 中。

4.Host-gw

Host-gw:二层网络配置,不支持云环境,通过在主机的路由表中直接创建路由信息(subnet路由条目),到达目标,性能好,配置麻烦

5.其他插件

  • Antree
  • Cannal
  • Kube-OVN
  • Weave-Net

五、总结——CNI网络插件

1.Flannel

通常会采用VXLAN模式,用的是叠加网络(二层和三层网络)、IP隧道方式传输数据,由于要进行封装和解封装,对性能有一定的影响。
Flannel产品成熟,依赖性较少,易于安装,功能简单,配置方便,利于管理。但是不具备复杂的网络策略配置能力。同时不具备策略的配置能力。

3种模式(UDPVXLANHost-gw

  • VLAN隧道模式,默认配置,利用内核VXLAN来封装主机(host)之间传送数据包
  • UDP用户态,就是应用程序封装,通过UDP协议,IP封装,解封装的过程,原理通过FLannel服务进行封装,将UDP封装进去。由于 UDP 模式是在用户态做转发,会多一次报文隧道封装,因此性能上会比在内核态做转发的 VXLAN 模式差。
  • Host-gw:二层网络配置,不支持云环境,通过在主机的路由表中直接创建路由信息(subnet路由条目),到达目标,性能好,配置麻烦

注:其中只配置一种,根据你的需求来配(或者自己判断)

默认网段10.244.0.0/16

2.Calico

功能强大,没有封装和解封装的过程,对性能影响较小,具有网络策略的配置能力,但是路由表维护起来比较复杂。

使用IPIP模式可以实现跨子网传输,但是传输过程中需要额外的封包和解包过程,对性能有一定的影响。
使用BGP模式会把每个node节点看作成路由器,通过Felix、BIRD组件来维护和分发路由规则,可实现直接通过BGP路由协议实现路由转发,传输过程中不需要额外封包和解包过程,因此性能较好,但是只能在同一个网段里使用,无法跨子网传输。
Calico不使用CNI0网桥,而使通过路由规则把数据包直接发送到目标主机,所以性能较高;而且还具有更丰富的网络策略配置管理能力,功能更全面,但是维护起来较为复杂。

默认网段192.168.0.0/16

模式:网络BGP、IPIP(封装的模式)、混合模式(CrossSubnet)

BGP:跨网络网关的动态路由协议,实现路由的最佳状态到达对端  

2.1Calico的IPIP模式工作原理

  1. 原始数据包从源主机的Pod容器发出,通过 veth pair 设备送达到tunl0接口,再被内核的IPIP驱动封装到node节点网络的IP报文
  2. 根据Felix维护的路由规则通过物理网卡发送到目标node节点
  3. IP数据包到达目标node节点的tunl0接口后再通过内核的IPIP驱动解封装得到原始数据包,再根据本地路由规则通过 veth pair 设备送达到目标Pod容器

2.2Calico的BGP模式工作原理 

每个Pod容器都有一个 veth pair 设备,一端接入容器,另一个接入宿主机网络空间,并设置一条路由规则。这些路由规则都是 Felix 维护配置的,由 BIRD 组件基于 BGP 动态路由协议分发路由信息给其它节点。

  1. 原始数据包从源主机的Pod容器发出,通过 veth pair 设备送达到宿主机网络空间
  2. 根据Felix维护的路由规则通过物理网卡发送到目标node节点
  3. 目标node节点接收到数据包后,会根据本地路由规则通过 veth pair 设备送达到目标Pod容器

所以对于较小规模且网络要求简单的K8S集群,可以采用Flannel作为CNI网络插件。

对于K8S集群规模较大且要求更多的网络策略配置时,可以考虑采用性能更好更全面的Calico或Cilium 

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

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

相关文章

爱普生M-A352加速度计受到日本气象厅认证

地震一直是缠在人们头顶的乌云,如何能在地震发生的时候提前获悉,防止造成更大的经济损失,成为了许多企业准备解决的问题。精工爱普生公司获悉,东京Knowledge ForesightInc.生产的配备爱普生M-A352 高性能三轴加速度计的“Yure Mon…

灌区信息化管理平台系统包含哪些内容?(全面介绍)

政策背景 2022年12月29日,水利部启动48处大中型灌区开展数字孪生灌区先行先试建设。 2023年2月24日,《2023年农村水利水电工作要点》:2023年农村水利水电工作的总体思路包括:紧盯保障国家粮食安全,加快推进大中型灌区现代化改造,…

传说中的运维门户设计

在IT服务管理这片广阔天地中,运维门户如同一位技艺高超的魔术师,轻轻一挥手,便将纷繁复杂的运维世界化繁为简,编织成一张便捷高效、触手可及的网络。它不仅是ITSM系统中不可或缺的一环,更是连接用户与技术世界的桥梁&a…

mars3d实现gltf模型new mars3d.graphic.ModelPrimitive({的自定义shader

原模型展示: 自定义shader效果展示: 运动状态下: 关键代码: const pointCloudWaveShader new Cesium.CustomShader({uniforms: {u_time: {type: Cesium.UniformType.FLOAT,value: 0}},vertexShaderText: void vertexMain(Vertex…

【全开源】房屋出租出售预约系统支持微信小程序+H5+APP

一款基于FastAdminThinkPHPUniapp开发的房屋出租出售预约系统,支持小程序、H5、APP;包含房客、房东(高级授权)、经纪人(高级授权)三种身份。核心功能有:新盘销售、房屋租赁、地图找房、小区找房,地铁找房等方式。 特色功能&#…

XML解析 之 DomFourJ解析

1,DomFourJ干嘛的? 百度一搜一大堆而且说的很繁琐,在这总结一句话: dom4j就是一个Java用来读写XML文件的API,而且简单又方便还好用 2,什么时候用? 不管读取什么XML文档只要你想用就用没啥限制…

浅谈工业用LED面光源

在机器视觉系统中,光源作为不可或缺的一部分,能够提高目标成像效果,增强检测效果。光源的选择至关重要,选到不合适的会影响成像及检测效果。针对不同的检测对象,不同的形状光源应运而生。我们来看看最常用的LED光源之一——面光源…

『 Linux 』重定向 Redirect(万字)

文章目录 🧸 什么是重定向🐡 文件描述符的分配规则🐡 重定向在日常使用中的简单示例 🧸 实现重定向的底层机制🐡 dup2()🐡 利用dup2()实现重定向 🧸 在自定义Shell当中添加重定向功能&#x1f4…

【Neo4jJDK开箱即用的安装全流程】

neo4j:命令行本地访问loclhost neo4j:命令行本地访问loclhost2 neo4j操作 Neo4j桌面版数据库导出导入 Neo4j安装与配置以及JDK安装与配置教程(超详细) Neo4j 安装、使用教程 Neo4j安装教程 Neo4J桌面版的配置和连接Pycharm jdk-neo对应版本 JDK ORACLE中…

2024/5/14 英语每日一段

“It is important as it suggests that possibly several populations in the world already started to include substantial amount of plants in their diet” in the period before agriculture was developed, a view contradictory to the popular one, added archeo-ge…

全网最通俗易懂的vue透传

概念: Vue的透传是指在Vue组件中,使用特定的语法将父组件传递的属性或事件直接传递给子组件,实现了通过父组件传递数据或事件,再传递给子组件的功能。(传递给一个组件,却没有被该组件声明为 props 或 emit…

2024年前一季度,国内医疗器械营收TOP10出炉!

随着国内医疗器械市场的不断发展,各大医疗器械公司的财报数据成为了投资者和行业观察者关注的焦点。近日,根据2024年第一季度财报数据,我们梳理出了中国医疗器械第一财季营收排名前十的械企,为大家带来深入的分析和解读。 一、营…

算法课程笔记——路径相关树形DP

算法课程笔记——路径相关树形DP #include<bits/stdc.h>usingnamespacestd; usingLL longlong; constintN 2005; vector<int>e[N],t; structasdf{vector<int> vec; LL val; }; vector<asdf>w[N]; LL dp[N]; intn,m,k,dep[N]{1},f[N]; voiddfs(in…

图生视频,Stable Diffusion WebUI Forge内置SVD了!

在 Stable Diffusion WebUI Forge 版本中内置了一个SVD插件&#xff0c;也就是 Stable Video Diffusion&#xff08;稳定视频扩散&#xff09;&#xff0c;之前我介绍过这个工具的使用方法&#xff1a;图片生成视频&#xff08;独立部署SVD) 但是当时还不能集成到Stable Diffu…

【代码阅读】SalsaNext

最近在找轻量级的语义分割模型&#xff0c;SalsaNext作为一个很经典的语义分割网络&#xff0c;在服务器的2080上面能够达到30毫秒一帧左右的推理速度&#xff0c;但是其网络本身提出的时间比较久远&#xff0c;后处理的部分使用的依然是最经典的knn&#xff0c;fidnet的后处理…

【已解决】attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

Spring Cloud 概述及项目创建

本篇主要介绍什么是Spring Cloud&#xff0c;以及Spring Cloud工程的创建 目录 一、什么是微服务&#xff1f; 集群 分布式 微服务 二、Spring Cloud 什么是Spring Cloud Spring Cloud 版本 Spring Cloud实现方案 Spring Cloud 工程创建 创建父工程 创建子工程 一、…

对文本框做字数限制

效果图 实现步骤 其中绝对布局根据需求自行调整 <!--单文本输入框--> <div class"form-group"><label class"col-sm-2 control-label is-required">面试公司&#xff1a;</label><div class"col-sm-9"><input …

【原创】springboot+mysql校园宿舍报修管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

日志:打印技巧

一、概览 Unity日志打印技巧 常规日志打印彩色日志日志存储与上传日志开关日志双击溯源 二、常规日志打印 1、打印Hello World 调用堆栈可以很好的帮助我们定位问题&#xff0c;特别是报错的Error日志 Debug.Log("Hello World");Debug.Log("This is a log m…