k8s的网络

news2024/9/21 19:03:07

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容器具有全集群唯一的虚拟ip地址

overlay网络:在底层物理网络的基础之上创建一个逻辑的网络层,二层+三层的集合,二层是物理网络,三层是逻辑上的网络层

overlay网络也是一种网络虚拟化的技术

flannel支持的数据转发方式:

1、UDP模式:默认模式(一般不用),应用层的转发,配置简单,但是性能最差

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

3、host-gw:性能最好,但是配置麻烦

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

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

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

udp基于应用层,用户态

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

flannel1.1接口

安装flannel:

93、94:

把软件包拖到opt目录

91:

cd /opt/k8s

传 kube-flannel.yml 文件到 /opt/k8s 目录中,部署 CNI 网络

93、94:

ifconfig查看一下有没有flannel.1

Calico插件:

flannel:每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装数据包---------->转发到目标的node节点。

到了目标节点,还有一个解封装的过程,再发送到目标pod,性能是有一定影响的

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

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

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

核心组件:

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

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

负责在宿主机上插入路由规则,维护calico所需要的网络设备。网络接口管理,监听,路由等等

BGP Client:bird  BGP的客户端,专门负责在集群中分发路由规则的信息,每一个节点都会有一个BGP client

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

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

calico的工作原理:

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

创建好pod之后,会添加一个设备cali       veth pair设备

虚拟网卡:veth pair是一对设备,虚拟的以太网设备

一头连接在容器的网络命名空间  eth0

另一头连接宿主机的网络命名空间  cali

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

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

数据包到达目标宿主机,veth pair设备,目标宿主机也是根据规则,下一跳地址,转发到目标容器

ipip模式:会生成一个tunnel。数据包都在tunnel内打包。封装:宿主机ip,容器内部的ip地址

安装calico:

91:

拖yml包

取消注释(ip地址自定义)

kubectl apply -f calico.yaml

kubectl get pods -n kube-system

kubectl get nodes

93、94:

ifconfg

flannel和calico:

flannel的特点:

配置简单,功能简单,基于overlay叠加网络实现,在物理层的网络上再封装一个虚拟的网络

vxlan是虚拟三层网络

udp是默认模式

host-gw

由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的能力UDP(协议)

默认网段:10.244.0.0/16

calico的特点:

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

模式:ipip  BGP

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

对比ipip模式,BGP模式没有隧道,BGP模式下,POD的数据包直接通过网卡发送到目的地

ipip的隧道,隧道进行数据包的封装ipv4----ipv4

简单的小集群:flannel

扩容,配置网络策略:calico

coredns:

可以集群当中的service资源创建一个域名和ip进行对应解析的关系

service

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

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

相关文章

qt 异常汇总

1. C2338 No Q_OBJECT in the class with the signal (编译源文件 ..\..\qt\labelme-master\src\mainwindow.cpp mainwindow头文件中的类没有Q_OBJECT宏定义,或者其子类或者其他依赖没有Q_OBJECT宏定义。 全部qt类都要写上Q_OBJECT. 2. C2385 对connect的访…

AI:116-基于深度学习的视频行为识别与分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

ctfshow——PHP特性

文章目录 web 89web 90web 91web 92web 93web 94web 95web 96web 97web 98web 99 web 89 使用人工分配 ID 键的数值型数组绕过preg_match. 两个函数: preg_match():执行正则表达式,进行字符串过滤。preg_match函数用法,正则表达式…

uni-app 前后端调用实例 基于Springboot 详情页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

【Java EE初阶七】多线程案例(生产者消费者模型)

1. 阻塞队列 队列是先进先出的一种数据结构; 阻塞队列,是基于队列,做了一些扩展,适用于多线程编程中; 阻塞队列特点如下: 1、是线程安全的 2、具有阻塞的特性 2.1、当队列满了时,就不能往队列里…

Yapi安装配置(CentOs)

环境要求 nodejs(7.6) mongodb(2.6) git 准备工作 清除yum命令缓存 sudo yum clean all卸载低版本nodejs yum remove nodejs npm -y安装nodejs,获取资源,安装高版本nodejs curl -sL https://rpm.nodesource.com/setup_8.x | bash - #安装 s…

图片中src属性绑定不同的路径

vue3 需求是按钮disable的时候,显示灰色的icon;非disable状态,显示白色的icon 一开始src写成三元表达式,发现不行,网上说src不能写成三元表达式,vue会识别成字符串 最后的解决方案 同时,发现…

win下持续观察nvidia-smi

简介:在Windows操作系统中,没有与Linux中watch命令直接对应的内置工具,但有1种方法快速简单的方法可以实现类似的效果,尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略: Python:查看windows下GPU的…

美国地质调查局历史地形图

简介 美国地质调查局地形图的历史可以追溯到 19 世纪末,当时美国地质调查局开始着手绘制整个美国的详细地图。1:24,000 比例尺,也称为 7.5 分四边形地图,成为最广泛使用的比例尺之一。每张地图覆盖 7.5 分经纬度的区域,从而详细呈…

在Docker中安装Tomact

目录 前言: 一.安装Tomact 查找指定的tomact版本 下载tomact9.0 查看该镜像是否安装成功 安装成功之后就开始运行镜像了 ps(用于列出正在运行的Docker容器) ​编辑 测试(虚拟机ip:8080) ​编辑 解决措施 ​编辑 完成以上步骤&…

【Nginx】反向代理和负载均衡

反向代理 nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器。 server {listen 80;server_name localhost;# 反向代理,处理管理端发送的请求location /api/ {proxy_pass http://localhost:8080/admin/;#proxy_pass http://webservers/…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

计算机视觉中的神经网络可视化工具与项目

前言 本文介绍了一些关于神经网络可视化的项目,主要有CNN解释器,特征图、卷积核、类可视化的一些代码和项目,结构可视化工具,网络结构手动画图工具。 CNN解释器 这是一个中国博士发布的名叫CNN解释器的在线交互可视化工具。 主要…

macOS跨进程通信: FIFO(有名管道) 创建实例

一: 简介 在类linux系统中管道分为有名管道和匿名管道。两者都能单方向的跨进程通信。 匿名管道(pipe): 必须是父子进程之间,而且子进程只能由父进程fork() 出来的,才能继承父进程的管道句柄,一般mac 开发…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)子线程 WorkerThread的实现 和 线程池ThreadPool的初始化

一、子线程 WorkerThread的实现 (1)工作线程 线程ID:每个线程都有一个唯一的ID,用于标识线程的名字:非必需,主要用于识别线程互斥锁:线程同步条件变量:线程阻塞EventLoop:在每个子…

WEB:探索开源PDF.js技术应用

1、简述 PDF.js 是一个由 Mozilla 开发的开源 JavaScript 库,用于在浏览器中渲染 PDF 文档。它的目标是提供一个纯粹的前端解决方案,摆脱了依赖插件或外部程序的束缚,使得在任何支持 JavaScript 的浏览器中都可以轻松地显示 PDF 文档。 2、…

解析大语言模型LLM的幻觉问题:消除错觉、提高认知

文章目录 前言一、幻觉介绍二、幻觉产生的原因三、幻觉的现象四、幻觉的分类五、幻觉解决方案六、幻觉待解决问题后记 前言 在人类的感知和认知过程中,幻觉一直是一个被广泛讨论和研究的问题。幻觉指的是一种虚假的感知或认知经验,使我们看到、听到或感…

YOLOv5算法进阶改进(12)— 引入YOLOv8中的C2f模块 | 提升小目标检测精度

前言:Hello大家好,我是小哥谈。YOLOv8是由Ultralytics开发的一个前沿的SOTA模型。它在以前成功的YOLO版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性。C2f模块和C3模块分别是YOLOv8和YOLOv5中的两种不同的模块设计,它们在结构和功能上有一些区别。本文将YOL…

很实用的ChatGPT网站—在线编程模块增补篇

很实用的ChatGPT网站(http://chat-zh.com/)——增补篇 今天介绍一个好兄弟开发的ChatGPT网站,网址[http://chat-zh.com/]。这个网站功能模块很多,包含生活、学习、医疗、法律、经济等很多方面。今天跟大家分享一下,新…

Java IO流介绍以及缓冲为何能提升性能

概念: 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。 Java IO 也称为IO流,…