k8s calico 网络原理
一、cluster ip
Cluster IP 是 Kubernetes 中 Service 的 IP 地址,它是一个虚拟 IP 地址,用于集群内的 Pod 相互通信。
例如:
- Cluster IP:2.2.2.2
- 负载的真实Pod IP:1.1.1.1
场景:
Pod A 的 IP 地址是 1.1.1.1,Pod B 的 IP 地址是 3.3.3.3。Pod B 要访问 Cluster IP 2.2.2.2。
流程:
- Pod B 发送一个请求到 Cluster IP 2.2.2.2。
- Kube-proxy 拦截了这个请求。
- iptables 将执行 NAT 规则,将 Cluster IP 2.2.2.2 转换为 Pod A 的 IP 地址 1.1.1.1。
- Kube-proxy 将请求转发到 Pod A。
- Pod A 处理请求,并返回响应。
- 响应通过 Kube-proxy 转发给 Pod B。
- iptables 将执行 NAT 规则,将 Pod A 的 IP 地址 1.1.1.1 转换回 Cluster IP 2.2.2.2。
报文:
- 去向:
- 发送者:Pod B
- 目的地:Cluster IP 2.2.2.2
- NAT 后:发送者:Pod B,目的地:Pod A
- 回向:
- 发送者:Pod A
- 目的地:Pod B
- 反转 NAT 后:发送者:Cluster IP 2.2.2.2,目的地:Pod B
总结:
Cluster IP 是 Kubernetes 中 Service 的 IP 地址,用于集群内的 Pod 相互通信。当 Pod 访问 Cluster IP 时,Kube-proxy 会拦截请求,并通过 NAT 规则将请求转发到后端 Pod。响应通过同样的过程返回给 Pod。
补充说明:
- 在本例中,Pod A 和 Pod B 都在同一个节点上。如果 Pod A 和 Pod B 在不同的节点上,Kube-proxy 还需要在节点之间进行负载均衡。
- Kube-proxy 还会维护一个连接池,以提高 Pod 之间的通信效率。
二、Node Port
Node Port 是k8s对外暴露服务的一种方式,通过访问节点保留的端口来访问k8s后端负载的pod.
例如:
client ip : 1.1.1.30
node1 ip : 2.2.2.30
pod a : 1.1.1.1
client 访问 node1的38888端口后面的服务:
报文: srt: 1.1.1.30 dest: 2.2.2.30:38888
node节点接到报文后:Kube-proxy 拦截并查看iptables规则将dest: 2.2.2.30:38888 nat 为真实负载的poda 1.1.1.1.此时报文为 srt: 1.1.1.30 dest: 1.1.1.1:443,
**此时报文被发送到真实的pod,但有个问题,poda会直接将数据包丢给client ip ,client 收到数据包不能处理,因为client无法访问真实的pod ip.
此时就需要在node1接收到数据包之后也将srt ip 转换:
nat前: srt: 1.1.1.30 (client ip ) dest: 2.2.2.30:38888 (node ip + 端口)
nat后: srt: 2.2.2.30 (node ip ) dest: 1.1.1.1:443 (真实的pod ip + 端口)
此时pod a接收到数据包就会把回包丢给node1 ,node 1接受到后执行反转nat :
发送回client到包为
nat前: srt: 1.1.1.1:443 (真实的pod ip ) dest: 2.2.2.30 (node ip )
nat后: srt: 2.2.2.30 (node ip ) dest: 1.1.1.30 (client ip )
相关文章:
k8s calico 网络原理
一、cluster ip Cluster IP 是 Kubernetes 中 Service 的 IP 地址,它是一个虚拟 IP 地址,用于集群内的 Pod 相互通信。 例如: Cluster IP:2.2.2.2负载的真实Pod IP:1.1.1.1 场景: Pod A 的 IP 地址是 …...
【Python学习笔记】循环
Python中有两种类型的循环: while 循环 和 for 循环 1. while 循环 while循环是: 检查一个条件表达式,只要条件表达式计算结果为True 时, 就执行下面缩进的代码。 如此反复,直到条件表达式计算结果为False时,结束 循…...
1 如何入门TensorFlow
近年来人工智能的火爆吸引了很多人,网上相关的热门课程报名的人很多,但是坚持下去的人却少。那些晦涩的原理没有一定知识的积累很难能理解。 如果你对人工智能感兴趣,且想利用人工智能去实现某项功能,而不是对人工智能本身感兴趣&…...
QTday02(常用类、UI界面下的开发、信号与槽)
今日任务 1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#x…...
自然语言处理---RNN经典案例之使用seq2seq实现英译法
1 seq2seq介绍 1.1 seq2seq模型架构 seq2seq模型架构分析: seq2seq模型架构,包括两部分分别是encoder(编码器)和decoder(解码器),编码器和解码器的内部实现都使用了GRU模型,这里它要完成的是一个中文到英文的翻译:欢迎…...
Python【判断列表的存在与否关系】
要求:使用列表判断一个列表是否在另外一个列表中 代码如下: list1 [1, 2, 6, 8, 7, 10, 5] print("列表1为:", list1) list2 [2, 6, 5, 10] print("列表2为:",list2) res False a 0 for i in list2:if …...
MyBatis篇---第三篇
系列文章目录 文章目录 系列文章目录一、如何执行批量插入?二、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?三、MyBatis实现一对一有几种方式?具体怎么操作的?一、如何执行批量插入? 首先,创建一个简单的insert语句: <insert id=”…...
uview1.0部分机型u-input组件禁用后无法触发click事件
最近,线上的一个 App 收到用户反馈,输入框禁用状态下点击无法拉起模态框。找了一下身边可用机型进行了测试,起初所有机型都没有复现这个问题,突然有一天 Redmi K30S Ultra 出现了异常,点击输入框无法触发点击事件&…...
Arduino IDE + Esp32 Cam + 实现视频流 + 开发环境部署
1、开发环境 Arduino ide 版本:2.2.1 esp32工具:2.0.5 示例代码 #include "esp_camera.h" #include <WiFi.h>// // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality // Ensure ESP32 Wrover Modu…...
Day4力扣打卡
打卡记录 同积元组(哈希表 排列组合) 链接 思路:用哈希表将数组中出现的两不同数乘积依次记录,将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…...
Paper Reading:《Consistent-Teacher: 减少半监督目标检测中不一致的伪目标》
目录 简介工作重点方法ASA, adaptive anchor assignmentFAM-3D, 3D feature alignment moduleGMM, Gaussian Mixture Model实施细节 实验与SOTA的比较消融实验 总结 简介 题目:《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-targets in Semi-supervi…...
设计模式:观察者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
简介: 观察者模式,它是一种行为型设计模式,它允许一个对象自动通知其依赖者(观察者)状态的变化。当被观察者的状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应。在观察者模式…...
kotling构造函数
Kotlin-继承与构造函数 - 简书 (jianshu.com) Kotlin语言中的继承与构造函数(详解)_kotlin 继承 构造函数_young螺母的博客-CSDN博客...
SpringMVC - 详解RESTful
文章目录 1. 简介2. RESTful的实现3.HiddenHttpMethodFilter4. RESTful案例1、准备工作2、功能清单3、具体功能:访问首页a>配置view-controllerb>创建页面 4、具体功能:查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&a…...
html表格标签
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--表格table 行 tr 列 td --> <table border"1px"><tr> <!--colsp…...
Node.JS---npm相关
文章目录 前言一、package.json配置项version:1.0.0devDependenciesdependenciespeerDependenciesoptionalDependencies 二、npm命令1、npm config listxmzs使用2、npm installpackage-lock.json作用 3、npm run4、 查看全局安装的可执行文件 npm生命周期npxnpx简介…...
Flutter的Don‘t use ‘BuildContext‘s across async gaps警告解决方法
文章目录 问题有问题的源码 问题原因问题分析Context的含义BuildContext的作用特殊情况 解决方法 问题 Flutter开发中遇到Don’t use BuildContext’s across async gaps警告 有问题的源码 if (await databaseHelper.isDataExist(task.title)) {showDialog(context: context,…...
Nginx 实战教程
本篇博客我会演示日常的工作中,我们是怎么利用nginx部署项目的。我们以部署一套前后分离的项目为本次讲述的内容 一、搭建后端项目 创建一个最简单的springboot项目: 只需要依赖一个web模块即可: 提供一个api接口,可以获取服务端…...
Web自动化——python
文章目录 1.八大元素定位2.元素基本操作3.浏览器常用操作4.获取元素信息的常用方法5.鼠标和键盘相关操作6.元素等待1.隐式等待2.显示等待 7.下拉选择框8.弹出框9.滚动条操作10.frame表单的切换11.多窗口切换12.窗口截图、验证码处理 1.八大元素定位 元素属性定位:id…...
华为OD 整数最小和(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
