目 录CONTENT

文章目录

k8s | 深入理解组件kube-proxy

RobKing
2023-07-13 / 0 评论 / 0 点赞 / 212 阅读 / 549 字

k8s | 深入理解组件kube-proxy

​ kube-proxy是一个关键的组件,它负责网络代理和负载均衡,就像一个智能的邮递员,帮助将来自外部的请求正确地路由到集群内的各个服务。

原理

kube-proxy 监听 API serverserviceendpoint 的变化情况,并通过 userspaceiptablesipvswinuserspaceproxier 来为服务配置负载均衡

​ 当在集群中创建一个Service时,kube-proxy会创建一个虚拟IP地址,并将该虚拟IP映射到Service所管理的所有Pod的IP。这就好像创建了一个商店,并给它分配了一个虚拟门面。

接下来,kube-proxy会将这个虚拟IP地址与一个网络代理(比如iptables规则,或者代理进程)相关联。

启动 kube-proxy

kube-proxy --kubeconfig=/var/lib/kubelet/kubeconfig --cluster-cidr=10.240.0.0/12 --feature-gates=ExperimentalCriticalPodAnnotation=true --proxy-mode=iptables

通过 Iptables, Ipvs 实现负载均衡

​ iptables是Linux中的一种防火墙技术,通过配置规则来控制网络流量,从而保护网络安全。iptables能够支持多种网络负载均衡算法,但它并不能实现高性能的负载均衡,适用于对性能要求较低的场景。所有发送到虚拟IP的请求都将通过iptables规则转发到正确的后端Pod,从而实现负载均衡

​ ipvs是Linux中的一种内核级别的负载均衡技术,它能够在内核中实现负载均衡,从而提高网络服务的性能和可用性。ipvs能够支持多种负载均衡算法,并且具有高性能、高可用性和高可扩展性的特点。适用于对性能要求较高的场景

Kube-proxy的不足之处

kube-proxy 目前仅支持 TCP 和 UDP,不支持 HTTP 路由,并且也没有健康检查机制。这些可以通过自定义 Ingress Controller 的方法来解决。

参考链接

0

评论区