kubernetes之kube-proxy运行机制分析

在kubernetes集群的每个node都会运行一个kube-proxy服务进程,这个进程可用看作Service的透明代理兼负载均衡器。其核心功能是将到某个Service的访问请求转发到后端的多个pod实例上。对每一个TCP类型的kubernetes Service,kube-proxy都会在本地Node上建立一个SocketServer类负责接受请求,然后均匀发送到后端某个pod的端口上,这个过程默认采用Round Robin负载均衡算法。也提供通过修改Service的service.spec.sessionAffinity参数的值来实现会话保持特性的定向转发。如果设置的值为clientIp,则将来自同一个clientIp的请求都转发到同一个后端pod上。

访问Service的请求,无论是用Cluster Ip+TargetPort的方式还是用节点机Ip+NodePort的方式,都被节点及的Iptables规则重定向到kube-proxy监听Service服务代理端口。kube-proxy接收到Service的访问请求后,会如何选择后端的pod呢?

目前kube-porxy负载均衡器只支持Round Robin算法,按照成员列表逐个选取成员。一轮循环完,开始下一轮。还支持Session保持。

原文地址:https://www.cnblogs.com/lgh344902118/p/11367972.html

时间: 2025-01-18 14:31:10

kubernetes之kube-proxy运行机制分析的相关文章

kubernetes之kubelet运行机制分析

kubernetes集群中,每个Node节点工作节点上都会启动一个kubelet服务进程.用于处理master系欸但下发到本节点的任务,管理pod和pod中的容器.每个kubelet进程都会在API Server上注册节点自身信息,定期汇报节点资源使用情况,通过cAdvisor监控容器和节点资源. 1.1 节点管理 节点通过设置kubelet启动参数“--register-node”来决定是否向API Server注册自己. kubelet默认10秒报告一次节点状态. 1.2 pod管理 kub

Unity Mono运行机制分析及内存优化

一.Mono原理 此处简单介绍下Mono这个奇葩,主要通过Mono可以轻松实现跨平台,目前使用Unity开发手游Android平台大多使用Mono实现,但是诛仙手游使用il2cpp技术.具体il2cpp知识大家可以度娘. 二.内存分配机制 上图为内存分配策略,但是在此结合实践经验有bug存在,当分配大块内存特别明显,来回分配与切换应用会崩溃,主要是GC不够及时即使是每次分配完手动GC也不会立即释放. 三.内存泄漏原因 Mono是如何判断已用内存中哪些是不再需要使用的呢?是通过引用关系的方式来进行

Laravel5学习四:Facade的运行机制

什么是Facades 官方文档如是说: Facades 提供一个 静态接口 给在应用程序的 服务容器 中可以取用的类.Laravel 附带许多 facades,甚至你可能已经在不知情的状况下使用过它们!Laravel 的「facades」作为在 IoC 容器里面的基础类的静态代理,提供的语法有简洁.易表达的优点,同时维持比传统的静态方法更高的可测试性和弹性. 说实话,这段话读起来真不像人类的语言,我准备来拆解一下. 首先, Facades 是一个类,是一个什么类呢?它是基础类的一个静态代理. 其

从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(转)

前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----超长文+多图预警,需要花费不少时间.---- 如果看完本文后,还对进程线程傻傻分不清,不清楚浏览器多进程.浏览器内核多线程.JS单线程.JS运行机制的区别.那么请回复我,一定是我写的还不够清晰,我来改... ----正文开始---- 最近发现有不少介绍JS单线程运行机制的文章,但是发现很多都仅仅是介绍某一部分的知识,而且各个地方的说法还不统一,容易造成困惑. 因此准备梳理这块知识点,结合已有的认知,基于网上的大量参

Struts2架构分析和运行机制

实例分析 1.在浏览器中输入url地址后,会通过http协议发送给tomcat,tomacat收到请求后查看访问的是哪个 webapplication(如下图的Struts2_0100_Introduction),tomcat把Struts2_0100_Introduction交给对应的 webapplication程序去处理. 2.之后会参考Struts2_0100_Introduction下的对应的web.xml文件,将请求交给Struts2Filter去处理 ("/*"为这个项目

ASP.NET MVC的运行机制--url的全局分析

全局 首先我们来看一副图片 首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerName/ActionName/Parameters的样子.这个请求被ASP.NET MVC的路由映射系统截获.(路由映射可以在Global.asax中配置,我们一会再说)路由映射系统按照映射规则,解析出控制器名ControllerName,Action名ActionName和各个参数Parameters,然后,找寻

解密SparkStreaming运行机制和架构分析

 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 作业的生成肯定是一个动态的生成 private[streaming]valgraph: DStreamGraph = { if(isCheckpointPresent) { cp_.graph.setContext(this) cp_.graph.restoreCheckpointData() cp_.graph }else{ require(batchDur_ != null,

Java 动态代理机制分析及扩展,第 1 部分

引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架.通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解.本文首先从 Java 动态代理的运行机制和特点出发,对其代码进行了分析,推演了动态生成类的内部实现. 回页首 代理:设计模式 代理是一种常用的设计

Java 动态代理机制分析及扩展

引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架.通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解.本文首先从 Java 动态代理的运行机制和特点出发,对其代码进行了分析,推演了动态生成类的内部实现. 代理:设计模式 代理是一种常用的设计模式,其