云原生是大型架构的核心,下面我重点详解K8S负载均衡原理@mikechen
K8S
Kubernetes(简称K8s),是目前最流行的容器编排平台。
主要解决,大规模容器调度与自动部署。
K8S 提供资源调度、服务发现、自动伸缩、滚动升级和自愈能力。

其中,服务发现 + 负载均衡 是 Kubernetes 最核心、最常用的功能。
K8S 负载均衡原理
K8S 的负载均衡机制分为集群内部、与集群外部两类。

集群内部负载均衡主要通过 Service(尤其是 ClusterIP、NodePort、Headless Service)实现。
当客户端访问 Service 时,Kube-proxy 在每个 Node 上负责将进入的流量转发到后端 Pod。
Kube-proxy 支持多种模式(iptables、ipvs),其中 iptables 利用内核的包过滤、与 NAT 规则进行简单的轮询/随机转发。
集群外部负载均衡,通常由 Ingress Controller 、或云厂商的外部 LB(如 ELB、SLB)承担。
它们接收外部请求并根据路由规则或 Service 类型将流量引导至集群内的入口点(NodePort 或 LoadBalancer 类型的 Service)。
K8S 负载均衡策略
当使用 Ingress Controller或 Service Mesh(如 Istio、Linkerd)时,负载均衡算法如下:
轮询:顺序把请求发给各 Pod,是最常见的通用算法,实现简单、分布相对均匀。

最少连接(least connections):优先把新连接分配给当前连接数最少的后端,用于单个请求耗时差异较大的场景,有助于减少热点 Pod。
一致性哈希 / Ring Hash:根据请求的 key(如用户 ID、IP、Cookie 等)计算哈希。
把请求映射到固定 Pod,常用于缓存集群、需要绑定用户数据到特定后端的场景。

加权轮询 / 加权最少连接:给每个 Pod 设置权重(例如按 CPU、内存、节点性能)。

权重大者分配到更多请求,适用于不同规格实例混合部署的场景。