K8S网络类型

k8s的网络类型

k8s的通信模式

1

pod内部之间容器与容器之间的通信,在同一个pod中容器是共享资源和网络,使用同一个网络命名空间,可以直接通信

2

同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实ip地址,同一个node之间的不同pod可以直接使用对方pod的ip地址进行通信,pod1和pod2是通过docker0的网桥来进行通信

3

不同node节点上的pod之间如何通信,cni的插件:cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,IP地址,路由等等参数

Flannel插件:功能就是让集群之中不同节点的docker容器具有全集群唯一的虚拟ai地址,他是一个overlay网络,在底层物理网络的基础之上,创建一个逻辑的网络层,准确的说它是二层加三层的集合,二层是物理网络,三层是逻辑上的网络层,overlay网络也是一种网络虚拟化的技术

Flannel支持的数据转发方式

1

UDP模式,默认模式,应用准发,配置简单,但是性能最差

2

Vxlan,基于内核转发,也是最常用的网络类型(小集群都是用这个)

3

Host-gw(性能最好,但是配置麻烦)

UDP:基于应用转发,flannel提供路由表,fannel封装数据包,解封装

Node都会有一个flannel的虚拟网卡

 

Vxlan:使用的就是overlay的虚拟隧道通信技术,二层+三层模式

Udp基于应用层,用户

Vxlan:flannel提供路由表,内核封装解封装

Flannel1.1接口

 Calico插件

Flannel:每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装成数据包再转发到目标node节点,到了目标节点,还有一个解封装的过程,再发送到目标pod,性能是有一定的影响。

Calico:采用直接路由的方式:BGP方式路由,它不需要修改报文,统一直接通过路由表换发,路由表会相当复杂,运行维护的要求比较高

BGP模式的特点:交换路由信息的外部网关协议,可以连接不同的node节点,node节点可能不是一个网段,BGP会自动寻址,自动选择可靠的路径,BGP实现可靠的,最佳的,而且是动态的路由选择,自动识别相邻的路由设备

Calico不使用overlay,也不需要交换,直接通过虚拟路由实现,每一台虚拟路由都通过BGP转发

核心组件

Felix:也是运行在主机的一个pod,一个进程,k8s,daemonset的方式部署的pod

Daemont set 会在每个node节点部署相同的pod,后台的运行方式

负责宿主机上插入路由规则,维护calico需要的网络设备,网络接口的管理,监听,路由等等。BGP Client: bird BGP的客户端,专门负责在集群中分发路由规则的信息,每一个节点都会有一个BGP Client、

BGP协议广播的方式通知其他节点的,分发路由的规则,实现网络互通

Etcd:保存路由信息,负责网络元数据的一致性,元数据是保证网络状态的一致性和准确性

Calico的工作原理

路由表来维护每个pod之间的通信

创建好pod之后,会添加一个设备cali  veth pair设备,在ifconfig中看到的也是一个虚拟网卡

虚拟网卡:veth pair是一对设备,虚拟的以太网设备,有两头,一头连接在容器的网络命名空间一般叫做eth0,另一头连接宿主机的网络命名空间也就是cali

IP地址分配:veth pair连接容器的部分给容器分配一个ip地址,这个ip地址是唯一标识,宿主机也会被veth pair分配一个calico的内部网络ip地址,和其他节点上的容器进行通信

Veth设备,容器发出的ip地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址,发送到网关(目标宿主机,)

数据包到达目标宿主机,veth pari设备 目标宿主机也是根据路由规则,下一跳地址

 

根据路由规则转发由BGP发现

在ipip模式:会生产一个tunnel(隧道),所有的数据包都在tunnel内部打包,封装:宿主机ip容器内部的ip地址

Flannel和calico区别

Flannel

Flannel:配置简单,功能简单,基于overlay叠加网络实现,在屋里层的网络在封装一个虚拟的网络

Vxlan是虚拟三层网络

Udp是默认模式

Vxlan是默认用的最多的模式,基于vni+ip进行转发,flannel提供路由表,内核封装和解封装,由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的能力UDP(协议,只管发)

默认网段10.244.0.0/16

Host-gw

Calico

Calico:功能强大,基于路由表进行转发,没有封装和解封装的过程,具备网络策略的配置能力,但是路由表维护起来复杂

有两个模式:ipip  BGP

BGP:模式通过ip路由表的前缀来实现目标主机的可达性,

特点:对比ipip模式,BGP模式没有隧道,BGP模式下,POD的数据包直接通过网卡发送到目标主机也就是目的地

Ipip的隧道:隧道进行数据包的封装ipv4---ipv4.

简单的小集群:flannel

涉及到扩容,配置网络策略:calico

Coredns

可以为集群当中的service资源创建一个域名和ip进行映射的关系

Service是对外提供访问的地址,现在我们加入DNS机制之后,可以直接访问他的服务名

Dashboard

仪表盘,kubenetes的可视化界面,在这个可视化界面上

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

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

相关文章

美国Top科技公司年薪大曝光,OpenAI 600万高居榜首!

全美顶尖AI公司年薪大曝光! OpenAI 600万高居榜首,微软、英伟达只有OpenAI 的一半。 近日,美国一家帮助博士生协商薪资的公司Rora发布了一份薪资报告,公布了这些顶尖AI公司给研究人员开出的平均薪水。 以下是部分顶级AI公司的名…

数据结构和算法-B树(B树的查找 B树的最大高度和最小高度)

文章目录 回顾:二叉查找树五叉查找树如何查找查找成功查找失败如何保证查找效率 B树B树的高度小结 回顾:二叉查找树 五叉查找树 进一步对范围划分,处于不同划分进入不同子树 四个数做划分,此时有五个区间 此时一个节点对应多个关…

[RoarCTF2019] TankGame

不多说,用dnspy反编译data文件夹中的Assembly-CSharp文件 使用分析器分析一下可疑的FlagText 发现其在WinGame中被调用,跟进WinGame函数 public static void WinGame(){if (!MapManager.winGame && (MapManager.nDestroyNum 4 || MapManager.n…

基于javaWeb的图书馆管理系统

概述 基于Spring Spring MVC MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 环境配置 开发环境:IDEA ,mysql5.7,m…

leaflet学习笔记-初始化vue项目(一)

leaflet简介 Leaflet是一款开源的轻量级交互式地图可视化JavaScript库,能够满足大多数开发者的地图可视化需求,其最早的版本大小仅仅38 KB。Leaflet能够在主流的计算机或移动设备上高效运行,其功能可通过插件进行扩展,拥有易于使用…

2023年房产赛道短视频平台营销观察

我国房地产经历20年的高速发展时期,地产相关从业人员依靠传统带看售楼处就能有相当规模的人流量,热门项目开盘可日销百套。 疫情三年,购房者的信息获取的习惯从线下踩盘变成线上观看短视频/直播,房企也越来越重视线上销售、抖音直…

C++ 一个有bug的贪吃蛇。。。。。。。。

C 一个有bug的贪吃蛇。。。。。。。。 #include <graphics.h> #include<Windows.h> #include<Mmsystem.h> #include<conio.h> #include<time.h> #include<stdio.h> #include<easyx.h> using namespace std; #pragma warning(di…

【AI】计算机视觉VIT文章(Transformer)源码解析

论文&#xff1a;Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020 源码的Pytorch版&#xff1a;https://github.com/lucidrains/vit-pytorch 0.前言 …

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件&#xff0c;最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

WPF Button使用漂亮 控件模板ControlTemplate 按钮使用控制模板实例及源代码 设计一个具有圆角边框、鼠标悬停时颜色变化的按钮模板

续前两篇模板文章 模板介绍1 模板介绍2 WPF中的Button控件默认样式简洁&#xff0c;但可以通过设置模板来实现更丰富的视觉效果和交互体验。按钮模板主要包括背景、边框、内容&#xff08;通常为文本或图像&#xff09;等元素。通过自定义模板&#xff0c;我们可以改…

test perf-03-性能测试之 Gatling 使用入门官方教程

quick start 快速入门 学习 Gatling 的概念&#xff0c;使用录制器创建可运行的 Gatling 仿真。 介绍 在这一部分&#xff0c;我们将使用 Gatling 进行负载测试一个简单的云托管的 Web 服务器&#xff0c;并向您介绍 DSL&#xff08;领域特定语言&#xff09;的基本要素。 …

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…