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

Kubernetes——CNI网络组件

目录

一、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 

相关文章:

Kubernetes——CNI网络组件

目录 一、Kubernetes三种接口 二、Kubernetes三种网络 三、VLAN与VXLAN 1.VLAN 2.VXLAN 3.区别 3.1作用不同 3.2vxlan支持更多的二层网络 3.3已有的网络路径利用效率更高 3.4防止物理交换机Mac表耗尽 3.5相对VLAN技术,VXLAN技术具有以下优势 四、CNI网…...

对关系型数据库管理系统的介绍

1.数据库的相关介绍 关系型数据库管理系统:(英文简称:RDBMS) 为我们提供了一种存储数据的特定格式,所谓的数据格式就是表, 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…...

Nodejs 第七十一章(libuv)

libuv 在Node.js中,libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的,它利用libuv来处理底层的异步操作,如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色: 事件循环&a…...

mysql实战题目练习

1、创建和管理数据库 创建一个名为school的数据库。 列出所有的数据库,并确认school数据库已经创建。 如果school数据库已经存在,删除它并重新创建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…...

Linux 案例命令使用操作总结

在信息技术日新月异的今天,Linux以其开源、稳定、高效的特性,逐渐成为了众多专业人士的首选操作系统。然而,关于Linux知识的学习,却常常陷入一个误区——许多人认为,掌握Linux就是死记硬背各种命令和参数。这种观念&am…...

图的拓扑序列(DFS2)

reference way:在图里面能延伸的越远,deep越大,说明它能从自己延伸很长到别的节点(别的节点一定有入度),它越可能没有入度。 way:感觉和DFS1差不多,只是从远变成了多。 #include&l…...

2024年小学生古诗文大会备考:吃透历年真题和知识点(持续)

根据往年的安排,2024年小学生古诗文大会预计这个月就将启动。该如何备考2024年小学生古诗文大会呢?根据往期的经验,只要吃透这些真题和背后的知识点,通过上海小学生古诗文大会的初选(初赛)一点问题都没有。…...

SystemC学习使用记录

一、概述 对于复杂的片上系统,在进行RTL编码前,需进行深入的系统级仿真,以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费,所进行的这些仿真要求在芯片的仿真模型上运行大量的软件&#xff0c…...

Github20K星开源团队协作工具:Zulip

Zulip:让团队协作的每一次交流,都精准高效。- 精选真开源,释放新价值。 概览 随着远程工作的兴起和团队协作的需求不断增加,群组聊天软件成为了日常工作中不可或缺的一部分。Zulip 是github上一个开源的团队协作工具,…...

C语言基础-标准库函数

C语言的标准库函数是由C语言标准库(如C99、C11等)提供的一系列预定义函数,这些函数通常用于执行常见的编程任务,如字符串操作、内存管理、数学计算、文件操作等。通过使用标准库函数,程序员可以更加高效地编写C语言程序…...

「51媒体」家居生活发布会,展览展会有哪些媒体邀约资源

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 家居生活类媒体包括多种类型,包括门户网站家居生活消费频道,专业的家居消费生活门户,以及行业媒体,平面媒体,KOL和意见领袖。下…...

力扣刷题--数组--第五天

昨天做了几道关于双指针求解的算法题,今天继续看相关的题目。 844. 比较含退格的字符串 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。   注意:如果对空…...

kafka学习笔记04(小滴课堂)

Kafka的producer生产者发送到Broker分区策略讲解 Kafka核心API模块-producer API讲解实战 代码: ProducerRecord介绍和key的作用 Kafka核心API模块-producerAPI回调函数实战 producer生产者发送指定分区实战 我们设置5个分区。 我们指定分区。 重新指定一个分区&am…...

三菱FX3U-4AD模拟量电压输入采集实例

硬件:PLC模块 FX3GA-24MT ;A/D模块FX&#xff13…...

OpenAI推出DALL·E 3识别器、媒体管理器

5月8日,OpenAI在官网宣布,将推出面向其文生图模型DALLE 3 的内容识别器,以及一个媒体管理器。 随着ChatGPT、DALLE 3等生成式AI产品被大量应用在实际业务中,人们越来越难分辨AI和人类创建内容的区别,这个识别器可以帮…...

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…...

信息系统项目管理师——十大管理过程输入、工具和技术、输出(论文篇)一

一、项目整合管理 制定项目章程 在项目管理中&#xff0c;制定项目章程是一个关键的初始过程&#xff0c;它正式授权项目的开始并为项目设定高层次的方向。项目章程的编制涉及特定的输入、采用的工具和技术&#xff0c;以及产生的输出。以下是这些方面的详细说明&#xff1a;…...

Java——代码块

1、概念分类 使用 {} 定义的一段代码称为代码块&#xff0c;根据代码块定义的位置以及关键字&#xff0c;可分为以下四种 普通代码块静态代码块构造代码块同步代码块 2、普通代码块 定义在方法中的代码块&#xff0c;这种用法较少见&#xff1a; 3、构造代码块 构造块&…...

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数&#xff0c;请求体变为query String…...

5.15项目进度总结

今天完成了随机选人和实时显示的功能&#xff08;还需要维护&#xff09;&#xff0c;使得程序可以对用户的操作进行实时的显示。 实时显示的思路&#xff1a;在登录后开一个线程用一个socket去链接服务端并查询需要实时的信息&#xff0c;同时服务端把这个socket记录下来&…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...