Kubernetes之kube-proxy运行机制分析

server/2025/2/11 5:17:18/

一、基础知识

        1.Kubernetes再创建服务时会为服务分配一个虚拟IP地址,客户端通过这个虚拟Ip地址来访问服务,而服务则负责将请求转发到后端pod上。

        2.上述阐述的过程为一个反向代理的过程,但是这个反向代理和普通的反向代理的区别是它的IP地址是虚拟的而且它的部署和启动以及停止是由K8s统一自动管理。

        3.在K8s集群里每个Node上都会运行一个kube-proxy服务进程,这个进程可以看作service的透明代理兼负载均衡器,主要作用就是把service的访问请求转发到后端的多个Pod实例上。

        4.对于每一个TCP类型的Kuberbetes Service, kube-proxy都会在本地node上建立一个SocketServer来负责接收请求,然后均匀发送到后端某个pod的端口上,这个过程采用Round Robin负载均衡算法。

        5.kube-proxy的负载均衡器只支持RoundRobin算法,另外在此算法的基础上也支持Session保持,如果service在定义中指定了session保持,则kube-proxy接收请求时会从本地查找是否存在来自该请求ip的affinityState对象,如果不存在,则会按照RR算法为该请求挑选一个Endpoint,并创建一个affinityState对象,记录请求的IP和指向的Endpoint,后面的请求就会粘连到这个创建好的affinityState对象上

二、kube-proxy实现细节

        1.kube-proxy通过查询和监听API Server中service与Endpoints的变化,为每个Service都创建一个服务代理对象并自同步。其中服务代理对象是kube-proxy中的一种数据结构,它包括用于监听此服务请求的SocketServer(随机选择本地的一个空闲端口),另外它也在内部创建了一个LoadBalancer(保存了Service到对应的后端Endpoint列表的动态转发路由表)

        2.kube-proxy针对iptables的操作(在iptables的NAT表中添加4条规则):

                KUBE-PORTALS-CONTAINER:从容器中通过cluster IP和端口号访问Service的请求

                KUBE-PORTALS-HOST:从主机中通过cluster ip和端口号访问service的请求

                KUBE-NODEPORT-CONTAINER:从容器中通过service的NodePort端口号访问service的请求

                KUBE-NODEPORT-HOST:从主机中通过Service的Nodeport端口号访问service的请求

        此外,kube-proxy在iptables中为每个Service创建了由Cluster IP+Service端口到kube-proxy所在主机+service的代理服务所监听的端口的转发规则


http://www.ppmy.cn/server/166665.html

相关文章

html转PDF文件最完美的方案(wkhtmltopdf)

目录 需求 一、方案调研 二、wkhtmltopdf使用 如何使用 文档简要说明 三、后端服务 四、前端服务 往期回顾 需求 最近在做报表类的统计项目,其中有很多指标需要汇总,网页内容有大量的echart图表,做成一个网页去浏览,同时…

NetCore Consul动态伸缩+Ocelot 网关 缓存 自定义缓存 + 限流、熔断、超时 等服务治理 + ids4鉴权

网关 OcelotGeteway 网关 Ocelot配置文件 {//单地址多实例负载均衡Consul 实现动态伸缩"Routes": [{// 上游 》》 接受的请求//上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法"UpstreamHttpMethod": [ "Get", &quo…

【R语言】卡方检验

一、定义 卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。 二、用…

洛谷 P2095 营养膳食 C语言

P2095 营养膳食 - 洛谷 | 计算机科学教育新生态 题目描述 Mr.L 正在完成自己的增肥计划。 为了增肥,Mr.L 希望吃到更多的脂肪,然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养。 Mr.L 通过研究发现:真正的营养膳食规定…

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构 一、项目结构项目根目录应用目录其他目录 二、项目设置Django 插件设置项目配置环境变量设置项目目录标记版本控制 三、Django 插件安装 Django 插件配置 Django 插件使用 Django 插件功能 四、扩展插件开发效率插…

未来AI医院蓝图:源码、机器人与数字孪生如何打造智能医疗APP?

在人工智能(AI)、物联网(IoT)和大数据技术的推动下,医疗行业正在经历一场深刻的变革。从传统医院到互联网医院,再到智能医疗生态的构建,未来的AI医院不仅能提供更高效的医疗服务,还能…

ProcessingP5js游戏掉落的恐龙蛋

这款游戏是一款趣味十足的物品接取游戏,玩家将扮演一个接物品的角色。游戏的目标是通过控制篮子左右移动,接住从天而降的恐龙蛋和其他物品,积累分数,同时避开掉落的损失道具,确保自己的分数不断增长。 游戏玩法非常简…

OpenGL学习笔记(十二):初级光照:投光物/多光源(平行光、点光源、聚光)

文章目录 平行光点光源聚光多光源 现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 平行光/定向光(Directional Light)点光源(Point Light)聚光(Spotlight) 平行光 当一个光源处于很远的地…