K8S负载均衡算法详解(图文全面总结)

云原生是大型架构的核心,下面我重点详解K8S负载均衡@mikechen

K8S

在现代云原生架构中,Kubernetes(简称 K8S),已经成为容器编排领域的事实标准。

K8S负载均衡算法详解(图文全面总结)-mikechen

随着微服务数量的增加,如何将外部或内部请求合理地分发到多个 Pod 上。

成为保障系统高可用、高性能与可扩展性的关键问题。

K8S 负载均衡正是解决这一问题的重要机制,它不仅提升了服务访问的稳定性,也使应用具备自动扩缩容和故障自愈能力。

 

K8S 负载均衡原理

K8S 中的负载均衡,本质上是将客户端请求分配到后端多个 Pod 实例上,从而避免单点压力过大。

K8S负载均衡算法详解(图文全面总结)-mikechen

K8S 负载均衡:就是把请求流量,平均分发到多个 Pod。

用户请求
    ↓
Service
    ↓
Pod1
Pod2
Pod3

它不仅提升了服务访问的稳定性,也使应用具备自动扩缩容和故障自愈能力。

从通信范围看,K8S 负载均衡主要分为两类:

集群内部负载均衡:通过 ClusterIP 暴露服务,供集群内其他组件访问。

集群外部负载均衡:通过 NodePort、LoadBalancer 或 Ingress 将服务暴露给外部用户。

 

K8S 负载均衡策略

K8S 本身主要依赖:iptables、IPVS、Ingress Controller,其中:IPVS 支持多种算法。

1. Round Robin(轮询)

K8S负载均衡算法详解(图文全面总结)-mikechen

例如有三个 Pod:A、B、C,流量会按 A→B→C→A 的顺序循环分配。

请求1 → Pod1
请求2 → Pod2
请求3 → Pod3

该算法实现简单,适合各实例性能相近的场景。

2. Least Connections(最少连接)

K8S负载均衡算法详解(图文全面总结)-mikechen

原理:

谁连接少给谁

适合:

长连接;

WebSocket;

3. Weighted Round Robin(加权轮询)

高性能机器分配更多流量。

K8S负载均衡算法详解(图文全面总结)-mikechen

例如:

Pod1 weight=5
Pod2 weight=1

Pod1 会获得更多请求。

4. Source Hash(一致性哈希)

根据请求特征,如源 IP、Cookie 或 URL 进行哈希计算,从而将同一类请求固定路由到同一 Pod。

K8S负载均衡算法详解(图文全面总结)-mikechen

适合:常用于会话保持(Session)等场景。

评论交流
    说说你的看法