网站首页 > 文章精选 正文
kubernetes中kube-proxy的默认代理模式是iptables,但是可以从iptables迁移到ipvs。
Kubernetes 代理模式分成:
①:userspace 用户空间模式
②:iptables 防火墙模式(默认模式)
③:ipvs 虚拟服务器模式
用户空间模式userspace 涉及到两个组件,kube-apiserver和kube-proxy。每个节点上的kube-proxy 都需要监听当前的kube-apiserver,也就是监听当前的负载均衡规则的需要去改变的信息,其实就是service对象。
客户端的pod 要想访问多个server 端的pod,首先客户端的pod需要先访问本地的防火墙规则,也就是service_ip,防火墙规则会把流量转发到当前节点的kube-proxy,或者是其它节点的kube-proxy。然后kube-proxy再代理server pod,返回给当前的客户端client pod,去实现当前的整个负载均衡。kube-proxy在整个工作方式里有两个功能:
1.需要去根据监听的service对象修改防火墙的规则,实现负载均衡的分发。
2.需要代理来自客户端的请求,再返回给客户端。
如果当前来自客户端的请求量级很大、请求的资源规模比较多的话,那么kube-proxy就会形成一定的压力。
Service服务的用户空间userspace模式,在用户空间模式下,kube-proxy的作用有两个:
①:监听kube-apiserver,并且根据service的变化修改本地的防火墙规则。
②:代理来自当前节点pod的用户请求。
在规模大的情况下,kube-proxy的压力可能会比较大,而且也不便于功能的解耦。
service中kube-proxy第二种工作模式是:iptables防火墙模式。
kube-proxy监听了kube-apiserver以后,只是将当前的监听结果写入至本机当前的防火墙规则。也就是后端的客户端访问,完全由防火墙iptables转发给当前的本地服务器和远程服务器中的Server pod,kube-proxy本身不再参与本身的代理功能。
kube-proxy防火墙iptables工作模式的好处:
①:这样功能就解耦了,功能不复杂才便于更稳定更有效的开发。
②:不会由于本机的一些pod数量的增多、请求量的增大导致kube-proxy出现压力。
kube-proxy的第二种工作模式是:iptables防火墙模式。kube-proxy的作用:kube-proxy监听kube-apiserver,并且根据service对象的变化修改本地的iptables防火墙规则。iptabls防火墙工作模式中pod的代理访问完全不经过kube-proxy组件,所以压力会更小一些。
kube-proxy的iptables防火墙工作模式,具有的优势:
①:相比第一代userspace用户空间模式,kube-proxy功能解耦、压力较小。
service中kube-proxy第三种工作模式是:ipvs虚拟服务器模式。
ipvs工作模式其实本质上没有变化,唯一的变化就是把底层的iptables防火墙换成了在linux机器里面的非常著名的底层负载均衡器ipvs,也叫LVS。
每个节点服务器里面kube-proxy去监听kube-apiserver,kube-proxy将当前service集群的负载均衡集群的信息去转换成ipvs规则,落在本地的机器上。然后每一个机器的客户端pod访问本机器的ipvs规则,被负载到第一个、第二个或者第三个pod中。
ipvs在当前的四层负载均衡领域是专业的,所以只是谈负载均衡的话,它是优于当前的iptables防火墙工作模式的。
所以kube-proxy用ipvs理论上是性能更强的选择。
默认的服务器kube-proxy并没有选择ipvs的方案工作,因为ipvs模块需要在内核中开启。kubernetes官方害怕由于服务器没有启用ipvs模块的规则导致默认启用ipvs规则的话,没办法正常工作。
很多云厂商内部服务器的ipvs模块是被移除了的。原因很简单:现在每家云公司在做活动,每一台服务器的价格比较便宜。但是如果买了一个云主机,在上面安装了ipvs去充当负载均衡集群的话,它的价格相对是比较低廉的。那么就不会购买云厂商自己提供的负载均衡即服务的服务了,所以云厂商会把ipvs的模块给事先去掉。
在service服务的kube-proxy ipvs工作模式中,要事先确认服务器是否已经正常加载ipvs模块。如果可以加载,那么推荐把kube-proxy的工作方式修改成ipvs模式,它的性能一定是最好的。与防火墙iptables的工作模式相比,ipvs的效率一定是更高的。每一个ipvs的引用没有任何问题,那么就可以修改kube-proxy的工作模式为ipvs。
修改kube-proxy的工作模式,把防火墙iptables模式改成ipvs虚拟主机模式的方法:
kubectl edit configmap kube-proxy -n kube-system
把mode改成ipvs。
然后:
kubectl delete pod -n kube-system -l k8s-app=kube-proxy
鼓励的话语:雄心的一半是耐心!
- 上一篇: Kubernetes架构最全详解(图文全面总结)
- 下一篇: Kube-Proxy 可观测性最佳实践
猜你喜欢
- 2025-04-23 Kubernetes原理深度解析:万字图文全总结!
- 2025-04-23 一站式速查知识总结,助您轻松驾驭容器编排技术(水平扩展控制)
- 2025-04-23 kubectl常用删除命令
- 2025-04-23 Devops实践之minikube部署:单机环境使用k8s
- 2025-04-23 Kubernetes组件及工作原理详解
- 2025-04-23 K8S架构原理详解(图文全面总结)
- 2025-04-23 Kubernetes Kube-Proxy 组件 IPVS 模式工作原理及常用故障排查
- 2025-04-23 K8s核心组件解析:一文读懂它们的作用
- 2025-04-23 k8s service 负载均衡:proxy mode介绍
- 2025-04-23 一起学云原生(3)k8s基础知识总结
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)