K8s内部的网路模式实现理解

overlay 网络模式

在 Kubernetes 中,overlay 网络模式被用于实现容器之间的网络通信。

K8s 使用了一种称为容器网络接口(Container Network Interface,简称CNI)的规范,该规范定义了容器如何进行网络连接。实际上,CNI 并没有指定特定的 overlay 网络技术,而是将其留给各个容器运行时(如Docker、CRI-O等)来实现。

常见的在 Kubernetes 上使用的 overlay 网络方案包括:

  • Flannel:一种常用的 overlay 网络方案,它使用了VXLAN技术来构建虚拟网络,并在每个主机上创建了一个 overlay 网络,容器通过这个 overlay 网络进行通信。
  • Calico:另一种常用的 overlay 网络方案,它使用了BGP(Border Gateway Protocol)协议来构建 overlay 网络,并提供了网络策略(Network Policy)功能。
  • Weave Net:这是另一个流行的 overlay 网络方案,它使用自家的 overlay 技术来实现网络通信,并提供了网络策略和服务发现等功能。
    这些 overlay 网络方案为 Kubernetes 集群提供了跨主机的容器通信能力,并确保容器之间的网络隔离和安全。总之,K8s 内部使用了 overlay 网络模式来提供容器之间的网络连接。

网络层面构建方式

在网络层面,overlay是一种网络拓扑结构的构建方式。它是在底层网络的基础上,创建了一个虚拟网络,通过在底层网络上构建逻辑上的网络层,实现了更高级别的网络功能和服务。

在传统的物理网络中,网络设备(如交换机、路由器)通过物理链路连接,数据包通过物理链路转发。而overlay网络则是在现有的底层网络之上,使用虚拟化技术创建了一个逻辑网络。在这个虚拟网络中,网络设备通过隧道协议将数据包封装并转发。

Overlay网络的主要优势是它可以提供更高级别的网络功能,如虚拟隔离、QoS(Quality of Service)、安全性等。同时,它还可以实现网络功能的灵活部署和管理,不受物理网络限制。

常见的overlay网络技术包括VXLAN(Virtual Extensible LAN)、GRE(Generic Routing Encapsulation)、MPLS(Multiprotocol Label Switching)等。这些技术利用封装和隧道协议,实现了数据包的透明传送和提供了更多的网络功能。

LAN说明

本地区域网络(Local Area Network,LAN)是一种计算机网络,用于连接位于相对较小地理范围内的设备,例如在家庭、办公室、学校或数据中心中。LAN通常用于实现数据共享、设备连接和资源共享等目的。

LAN通常由位于同一局域网(Local Area Network)中的多台计算机、服务器、网络设备(如交换机和路由器)、打印机和其他网络连接设备组成。这些设备通过网络链路(如以太网)相互连接,以实现数据交换和通信。

在一个LAN中,计算机和设备可以通过网络协议进行通信,例如传输控制协议/因特网协议(TCP/IP)是广泛使用的协议套件之一。通过TCP/IP,计算机和设备可以进行互联网连接,并进行文件共享、访问互联网、发送电子邮件等操作。

LAN通常具有以下特点:

  1. 地理范围较小:LAN通常覆盖较小的地理区域,例如单个建筑物、一个办公室或一个校园。
  2. 高速连接:由于局域网范围较小,计算机和设备之间的连接速度通常很快,可以提供更高的带宽和数据传输速率。
  3. 常见的拓扑结构:LAN常见的网络拓扑结构包括总线型、星型和环形等形式。在LAN中,常用的网络设备,如交换机和路由器,用于管理和控制网络流量。
  4. 数据共享和资源共享:通过LAN,计算机和设备可以共享文件、打印机、服务器和其他网络资源,提高工作效率和协作能力。
  5. 局域网管理:在LAN中,网络管理员负责配置、管理和维护网络设备和连接,确保网络正常运行,并保障安全性和可靠性。

总之,本地区域网络(LAN)是连接位于相对较小地理范围内的计算机和设备的网络,常用于实现数据共享和资源共享等目的。它提供快速、高效的连接,并通过网络协议实现计算机和设备之间的通信。

VXLAN(Virtual Extensible LAN)

VXLAN(Virtual eXtensible LAN)是一种网络虚拟化技术,用于创建虚拟局域网。它可以将不同的网络数据包封装在UDP数据包中,将虚拟网络从底层网络互相隔离,从而提供可扩展性和安全性。

在Kubernetes中,VXLAN被用于实现overlay网络。Kubernetes中的VXLAN采用了基于UDP、未加密的隧道技术,它允许在虚拟网络中创建逻辑子网,而这些逻辑子网可能分布在不同的物理网络中。该隧道技术不仅可以将容器之间的通信隔离出来,同时还可以保护容器中的应用程序免受攻击和威胁。

在Kubernetes中,每个节点都会创建一个VXLAN隧道,并将这个隧道与其他节点的隧道连接在一起,以便容器之间可以进行通信。使用VXLAN技术,Kubernetes可以提供高效和高可用的overlay网络,从而确保容器的可靠性和安全性。

K8s solution

当我们在Kubernetes集群中部署容器时,我们需要确保这些容器之间可以进行网络通信。Overlay网络模式是一种常用的解决方案,它允许在底层网络之上创建一个虚拟网络,以实现跨主机的容器通信。

Overlay网络模式通过在物理网络之上创建逻辑网络来提供容器之间的通信能力。它使用了封装和隧道协议来将通信数据包包装在另一个数据包中,从而实现数据包的传输。在Kubernetes中,Overlay网络模式使用容器网络接口(CNI)来定义容器之间的网络连接。

在Kubernetes中,常见的Overlay网络方案包括Flannel、Calico和Weave Net。这些方案使用了不同的技术来实现Overlay网络。

以Flannel为例,它是一种基于VXLAN(Virtual Extensible LAN)的Overlay网络方案。VXLAN技术允许在底层网络之上创建一个虚拟网络,通过将通信数据包封装在UDP数据包中,并在物理网络上传输。这样,容器可以通过Overlay网络进行通信,就好像它们属于同一个局域网一样。

在Kubernetes中,每个节点都会创建一个VXLAN隧道,形成一个虚拟的Overlay网络。容器可以通过这个Overlay网络进行跨节点的通信。VXLAN技术还能够提供容器之间的网络隔离和安全性,确保容器之间的通信是安全可靠的。

VXLAN技术的实现原理是通过封装和隧道协议来传输通信数据包。当一个容器发送数据包时,它首先将数据包封装在一个UDP数据包中。接下来,这个UDP数据包会被发送到目标容器所在的节点。

目标节点收到UDP数据包后,会将其解封,并将数据包传递给目标容器。这样,容器之间就可以通过Overlay网络进行通信,而底层网络对这种通信是透明的。

VXLAN技术的作用是实现虚拟网络的构建和容器之间的通信。通过VXLAN技术,Kubernetes能够在底层网络之上创建一个逻辑上的Overlay网络,使得容器可以自由地通信,而不受底层网络拓扑的限制。

此外,VXLAN技术还提供了容器之间的网络隔离和安全性。由于通信数据包被封装在UDP数据包中,并通过隧道传输,因此它们是安全可靠的,不容易受到网络攻击和威胁。

On the other hand

Overlay network mode is a commonly used solution in Kubernetes to facilitate communication between containers. It allows the creation of a virtual network overlay on top of the underlying physical network to enable container communication across hosts.

In Kubernetes, overlay network mode leverages the Container Network Interface (CNI) to define and establish network connections between containers. It implements encapsulation and tunneling protocols to wrap communication packets within another packet, enabling their transmission over the network. This way, containers can communicate using the overlay network as if they were part of the same local network.

Several overlay network solutions exist in Kubernetes, including Flannel, Calico, and Weave Net. These solutions employ different technologies to implement overlay networking.

Let’s take Flannel as an example, which is an overlay network solution based on VXLAN (Virtual Extensible LAN). VXLAN enables the creation of a virtual network overlay on top of the physical network. It encapsulates communication packets within UDP datagrams and transports them across the physical network. Consequently, containers can communicate over the overlay network, appearing as if they belong to the same LAN.

In Kubernetes, each node sets up a VXLAN tunnel, forming a virtual overlay network. Containers can communicate across nodes using this overlay network. VXLAN technology also provides network isolation and security between containers, ensuring secure and reliable communication.

The implementation principle of VXLAN technology involves encapsulation and tunneling protocols to transport communication packets. When a container sends a packet, it encapsulates it within a UDP datagram. This UDP datagram is then transmitted to the destination node where the receiving container resides.

Upon receiving the UDP datagram, the destination node decapsulates the packet and delivers it to the target container. This enables communication between containers over the overlay network, with the underlying network remaining transparent to this communication.

VXLAN technology’s purpose is to facilitate the creation of virtual networks and enable communication between containers. Through VXLAN, Kubernetes builds a logical overlay network on top of the underlying physical network. This freedom allows containers to communicate across nodes without being limited by the physical network topology.

Furthermore, VXLAN technology provides network isolation and security between containers. By encapsulating packets in UDP datagrams and transporting them via tunnels, communication remains secure and reliable, reducing the risk of network attacks and threats.

In summary, overlay network mode is a solution used in Kubernetes to establish container communication. VXLAN technology is a commonly used approach for enabling overlay networks. By encapsulating and tunneling communication packets, VXLAN establishes a virtual overlay network on top of the physical network, offering secure container communication and flexibility in network topology within the Kubernetes cluster.

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

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

相关文章

SDP 与Rtcp-fb

1、sdp介绍 SDP(Session Description Protocol)是一种用于描述多媒体会话的协议,它在会话层起着重要的作用。SDP的主要功能是提供会话的元数据和配置信息,以便参与者能够协商和建立一致的会话。 以下是SDP在会话层的作用&#x…

生活随笔,记录我的日常点点滴滴.

前言 😘个人主页:曲终酣兴晚^R的小书屋🥱 😕作者介绍:一个莽莽撞撞的🐻 💖专栏介绍:日常生活&往事回忆 😶‍🌫️每日金句:被人暖一下就高热&…

catboost推理开GPU加速

核心设置 model.predict(feature, task_type‘GPU’) 代码参考 # 训练配置 params {"catboost": {"n_estimators": 7000,"learning_rate": 0.03,"eval_metric": "AUC","loss_function": "RMSE",&qu…

【sgDragSize】自定义拖拽修改DIV尺寸组件,适用于窗体大小调整

核心原理就是在四条边、四个顶点加上透明的div,给不同方向提供按下移动鼠标监听 ,对应计算宽度高度、坐标变化 特性: 支持设置拖拽的最小宽度、最小高度、最大宽度、最大高度可以双击某一条边,最大化对应方向的尺寸;再…

一次Linux中的木马病毒解决经历(6379端口---newinit.sh)

病毒入侵解决方案 情景 最近几天一直CPU100%,也没有注意看到了以为正常的服务调用,直到腾讯给发了邮件警告说我的服务器正在入侵其他服务器的6379端口,我就是正常的使用不可能去入侵别人的系统的,这是违法的. 排查 既然入侵6379端口,就怀疑是通过我的Redis服务进入的我的系统…

Vue基础-1.知识导航

知识导航(就问全不全) 当学习 Vue.js 时,除了基本的 HTML、CSS 和 JavaScript 知识外,还有一些其他的技术和语法需要了解,例如 ES6 和 TypeScript。以下是您可能需要学习的一些基础知识和对应的学习资源,我…

css中变量和使用变量和运算

变量: 语法:--css变量名:值; --view-theme: #1a99fb; css使用变量: 语法:属性名:var( --css变量名 ); color: var(--view-theme); css运算: 语法:属性名…

vue3 rouer params传参的问题

route.params在页面刷新的时候数据会丢失,所以vue3 弃用了params方式! 但是,vue3又更新了一个替代params的方式:history API import { useRouter } from "vue-router" const router userRouter; // 跳转路由&#xff…

JDBC封装与设计模式

什么是 DAO ? Data Access Object(数据存取对象) 位于业务逻辑和持久化数据之间实现对持久化数据的访问 DAO起着转换器的作用,将数据在实体类和数据库记录之间进行转换。 ----------------------------------------------------- DAO模式的组成部分 …

数据结构--拓扑排序

数据结构–拓扑排序 AOV⽹ A O V ⽹ \color{red}AOV⽹ AOV⽹(Activity On Vertex NetWork&#xff0c;⽤顶点表示活动的⽹)&#xff1a; ⽤ D A G 图 \color{red}DAG图 DAG图&#xff08;有向⽆环图&#xff09;表示⼀个⼯程。顶点表示活动&#xff0c;有向边 < V i , V j …

计算机网络的性能指标

计算机网络的性能指标 1. 速率 速率是指数据在网络中传送的速度&#xff0c;通常用比特率或数据率来表示&#xff0c;单位是b/s&#xff0c;或bit/s&#xff0c;即比特每秒&#xff0c;或者bps(bit per second)。 速率单位&#xff1a;1 Ybps 10^24 bps(尧), 1 Zbps 10^21…

python中的lstm:介绍和基本使用方法

python中的lstm&#xff1a;介绍和基本使用方法 未使用插件 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;专门用于处理序列数据。LSTM 可以记忆序列中的长期依赖关系&#xff0c;这使得它非常适合于各…

深度思考rpc框架面经之四

7 netty机制的一些理解 推荐阅读&#xff1a; 深度思考netty网络编程框架 7.1 Netty支持的端口号: Netty可以绑定到任何合法的端口号&#xff0c;这与大多数网络库类似。有效的端口范围是从0到65535&#xff0c;但通常建议使用1024以上的端口&#xff0c;因为0-1023的端口已…

算法与数据结构(二十四)最优子结构原理和 dp 数组遍历方向

注&#xff1a;此文只在个人总结 labuladong 动态规划框架&#xff0c;仅限于学习交流&#xff0c;版权归原作者所有&#xff1b; 本文是两年前发的 动态规划答疑篇open in new window 的修订版&#xff0c;根据我的不断学习总结以及读者的评论反馈&#xff0c;我给扩展了更多…

【STM32】高效开发工具CubeMonitor快速上手

工欲善其事必先利其器。拥有一个辅助测试工具&#xff0c;能极大提高开发项目的效率。STM32CubeMonitor系列工具能够实时读取和呈现其变量&#xff0c;从而在运行时帮助微调和诊断STM32应用&#xff0c;类似于一个简单的示波器。它是一款基于流程的图形化编程工具&#xff0c;类…

面试题:线程池的底层工作原理

线程池的几个重要的参数&#xff1a; 1、corePoolSize&#xff1a;线程池的核心线程数&#xff08;也是默认线程数&#xff09; 2、maximumPoolSize&#xff1a;最大线程数 3、keepAliveTime&#xff1a;允许的线程最大空闲时间&#xff08;单位/秒&#xff09; 线程池内部是…

链表之第二回

欢迎来到我的&#xff1a;世界 该文章收入栏目&#xff1a;链表 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言第一题&#xff1a;反转一个链表第二题&#xff1a;链表内指定区间反转第三题&#xff1a;判断一个链表…

opencv+ffmpeg+QOpenGLWidget开发的音视频播放器demo

前言 本篇文档的demo包含了 1.使用OpenCV对图像进行处理&#xff0c;对图像进行置灰&#xff0c;旋转&#xff0c;抠图&#xff0c;高斯模糊&#xff0c;中值滤波&#xff0c;部分区域清除置黑&#xff0c;背景移除&#xff0c;边缘检测等操作&#xff1b;2.单纯使用opencv播放…

一个案例:Vue2组件化开发组件从入门到入土

1. 环境搭建 1.1. 创建项目 npm install -g vue/clivue create vue_study_todolist1.2. 清空项目代码 清楚HelloWorld.Vue代码中的内容。 1.3. 启动空项目 1.4 项目目标 项目组件实现以下效果 2. 组件拆分代码 Vue是一个基于组件的框架&#xff0c;允许您将界面拆分成小的…

open cv学习 (五) 图像的阈值处理

图像的阈值处理 demo1 # 二值化处理黑白渐变图 import cv2 img cv2.imread("./img.png", 0) # 二值化处理 t1, dst cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) cv2.imshow("img", img) cv2.imshow("dst", dst) cv2.waitKey() cv2.des…