K8S中网络如何通信

Kubernetes 提出了一个自己的网络模型“IP-per-pod”,能够很好地适应集群系统的网络需求,它有下面的这 4 点基本假设:

  • 集群里的每个 Pod 都会有唯一的一个 IP 地址。
  • Pod 里的所有容器共享这个 IP 地址。
  • 集群里的所有 Pod 都属于同一个网段。
  • Pod 直接可以基于 IP 地址直接访问另一个 Pod,不需要做麻烦的网络地址转换(NAT)。

因为 Pod 都具有独立的 IP 地址,相当于一台虚拟机,而且直连互通,也就可以很容易地实施域名解析、负载均衡、服务发现等工作,以前的运维经验都能够直接使用,对应用的管理和迁移都非常友好。

CNI 为网络插件定义了一系列通用接口,开发者只要遵循这个规范就可以接入 Kubernetes,为 Pod 创建虚拟网卡、分配 IP 地址、设置路由规则,最后就能够实现“IP-per-pod”网络模型。

依据实现技术的不同,CNI 插件可以大致上分成“Overlay”“Route”和“Underlay”三种。

Overlay 的原意是“覆盖”,是指它构建了一个工作在真实底层网络之上的“逻辑网络”,把原始的 Pod 网络数据封包,再通过下层网络发送出去,到了目的地再拆包。因为这个特点,它对底层网络的要求低,适应性强,缺点就是有额外的传输成本,性能较低。

Route 也是在底层网络之上工作,但它没有封包和拆包,而是使用系统内置的路由功能来实现 Pod 跨主机通信。它的好处是性能高,不过对底层网络的依赖性比较强,如果底层不支持就没办法工作了。

Underlay 就是直接用底层网络来实现 CNI,也就是说 Pod 和宿主机都在一个网络里,Pod 和宿主机是平等的。它对底层的硬件和网络的依赖性是最强的,因而不够灵活,但性能最高。

Flannel最早是一种 Overlay 模式的网络插件,使用 UDP 和 VXLAN 技术,后来又用 Host-Gateway 技术支持了 Route 模式。Flannel 简单易用,是 Kubernetes 里最流行的 CNI 插件,但它在性能方面表现不是太好,所以一般不建议在生产环境里使用。

Calico是一种 Route 模式的网络插件,使用 BGP 协议(Border Gateway Protocol)来维护路由信息,性能要比 Flannel 好,而且支持多种网络策略,具备数据加密、安全隔离、流量整形等功能。

Cilium是一个比较新的网络插件,同时支持 Overlay 模式和 Route 模式,它的特点是深度使用了 Linux eBPF 技术,在内核层次操作网络数据,所以性能很高,可以灵活实现各种功能。在 2021 年它加入了 CNCF,成为了孵化项目,是非常有前途的 CNI 插件。

此文章为7月Day25学习笔记,内容来源于极客时间《Kubernetes入门实战课》,推荐该课程。

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

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

相关文章

STM32MP157驱动开发——按键驱动(POLL 机制)

文章目录 “POLL ”机制:APP执行过程驱动使用的函数应用使用的函数pollfd结构体poll函数事件类型实现原理 poll方式的按键驱动程序(stm32mp157)gpio_key_drv.cbutton_test.cMakefile修改设备树文件编译测试 “POLL ”机制: 使用休眠-唤醒的方式等待某个…

MySQL主从复制、读写分离

目录 一、MySQL的复制类型 二、MySQL主从复制工作流程 三、MySQL的同步方式 1、异步复制(Async Replication) 2、同步复制(sync Replication) 3、半同步复制(Async Replication) 四、MySQL应用场景 …

TCP/IP 五层协议模型

转载大佬文章 我们每天使用互联网,本质上是在传输/接收各种数据,具体如何传输则是按照一系列互联网协议进行的。我们常说的网络七层模型,五层模型,四层模型都是对数据传输过程做了细化的分层。 按照五层模型比较好理解&#xff0c…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统,底层设备一般均为物理硬件,操作系统启动之前会对硬件进行检测,然后硬盘引导启动操作系统,如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统(Basic Input Output Sy…

基于Java+SpringBoot+vue前后端分离校园周边美食探索分享平台设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

opencv-19 图像色彩空间转换函数cv2.cvtColor()

cv2.cvtColor() 函数是 OpenCV 中用于图像颜色空间转换的函数。它允许你将图像从一个色彩空间转换为另一个色彩空间。在 Python 中,你可以使用这个函数来实现不同色彩空间之间的转换。 函数的基本语法为: cv2.cvtColor(src, code[, dst[, dstCn]])参数…

leetcode5. 最长回文子串(Manacher - java)

Manacher回文算法 leetcode5. 最长回文子串Manacher 算法 manacher 算法 leetcode5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s “…

搭建关键字驱动自动化测试框架

前言 上篇文章我们已经了解到了数据驱动自动化测试框架是如何构建和驱动测试的!那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架,它也被称为表格驱动测试或者基于动作字的测试…

Windows10 下 Neo4j1.5.8 安装教程

前言 Neo4j 是一个高性能的、NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。基于磁盘的、具备完全的事务特性的 Java 持久化引擎,这里就不把他和常用关系型数据库做对比了。因为篇幅有限,我这里也是第一次使用,所以以…

elasticsearch报错问题

标题1.报错问题 标题2.新建一个配置类 package cn.itcast.hotel.config;import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import o…

【Linux】Tcp协议的通讯流程,浅谈三次握手四次挥手

文章目录 Tcp协议的通讯流程一、协议定制与网络版计算器的实现二、json的使用总结 Tcp协议的通讯流程 上一篇文章我们讲解了如何实现Tcp服务器,Tcp的接口也用了,下面我们就看一下Tcp协议的通讯流程: 在服务端,我们首先要创建一个…

电脑C盘空间大小调整 --- 扩容(扩大/缩小)--磁盘分区大小调整/移动

概述: 此方法适合C盘右边没有可分配空间(空闲空间)的情况,D盘有数据不方便删除D盘分区的情况下,可以使用傲梅分区助手软件进行跨分区调整分区大小,不会损坏数据。反之可直接使用系统的磁盘管理工具进行调整…

Flutter学习—— Vscode创建项目

目录 一、Vscode创建项目 二、补充五种项目类型 Application: Module 模块开发, Package开发 Plugin 插件开发 Skeleton 骨架开发 一、Vscode创建项目 1.快捷键 CtrlShiftP 打开命令面板,选择新项目 2.选择需要开发的项目类型 Application 应用开…

Tomcat 的使用(图文教学)

Tomcat 的使用(图文教学) 前言一、什么是Tomcat?二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中6.1 方式一6.2 …

红队打靶:Nullbyte打靶思路详解(vulnhub)

目录 写在开头 第一步:主机发现与端口扫描 第二步:Web渗透 第三步:hydra密码爆破 第四步:SQL注入大赏 方法一:手工SQL注入之联合查询 方法二:SQL注入写入一句话木马 方法三:SQL注入写入…

C语言学习笔记 VScode设置C环境-06

目录 一、下载vscode软件 二、安装minGW软件 三、VS Code安装C/C插件 3.1 搜索并安装C/C插件 3.2 配置C/C环境 总结 一、下载vscode软件 在官网上下载最新的版本 Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/download 二、安装minGW…

测试覆盖率 JVM 字节码测试运用 - 远程调试、测试覆盖、影子数据库

目录 前言: 简介 基础使用方式介绍 工具特性 前言: 在软件开发中,测试覆盖率是一个非常重要的指标,它表示代码中所有的测试用例是否都已经被覆盖到。JVM 字节码测试是一种比较新的测试方法,它可以对 JVM 字节码进…

nlp系列(6)文本实体识别(Bi-LSTM+CRF)pytorch

模型介绍 LSTM:长短期记忆网络(Long-short-term-memory),能够记住长句子的前后信息,解决了RNN的问题(时间间隔较大时,网络对前面的信息会遗忘,从而出现梯度消失问题,会形成长期依赖…

开源项目注意事项

fork项目后,记得另外开启一个分支然后在新分支上进行开发,push到仓库后从分支往原项目提交。 否则会出现Partially verified(导致提交pr后auto-merge失败) 注意git提交操作 https://blog.csdn.net/sonichenn/article/details/13…

flask中的werkzeug介绍

flask中的werkzeug Werkzeug是一个Python库,用于开发Web应用程序。它是一个WSGI(Web Server Gateway Interface)工具包,提供了一系列实用功能来帮助开发者处理HTTP请求、响应、URLs等等。Werkzeug的设计非常灵活,可以…