You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes无内置负载均衡器为何仍能实现跨Pod流量分发?

核心概念澄清

你混淆了Kubernetes中两类不同的负载均衡能力:

  • 第一类是所有Service默认自带的集群内四层负载均衡:这个能力由kube-proxy组件原生实现,只要流量进入集群匹配到Service规则,kube-proxy就会按照配置的转发策略(默认是轮询)将流量分发到后端关联的多个Pod上。你测试时访问8080端口能拿到不同节点上的Pod响应,就是这个原生能力的体现,这个确实是K8s自带的。
  • 第二类是LoadBalancer类型Service依赖的外部入口负载均衡:业界常说的「Kubernetes本身不提供负载均衡能力」特指这部分。原生K8s没有内置实现这类负载均衡的资源供给能力,如果你在裸金属服务器或者无云厂商适配的原生集群中创建type=LoadBalancer的Service,你会看到Service的EXTERNAL-IP字段会一直处于<pending>状态,没有可用的外部访问入口,无法从集群外直接访问该Service。

为什么本地集群可以正常使用LoadBalancer类型Service?

Minikube、kind这类本地开发用的集群工具,为了降低本地开发门槛,都默认额外集成了LoadBalancer适配实现:

  • Minikube内置了tunnel组件,会自动将LoadBalancer类型的Service映射到本地可访问的地址
  • kind默认适配了MetalLB作为LoadBalancer实现,会从预留的本地网段中给Service分配可用IP

你本地测试能直接访问LoadBalancer类型的Service,是集群工具额外提供的能力,不是原生K8s自带的功能。

对应操作命令说明

你执行的三个命令的作用分别是:

# 创建名为kiada的Deployment,使用指定镜像
kubectl create deployment kiada --image=luksa/kiada:0.1
# 将kiada的副本数扩容到3个
kubectl scale deployment kiada --replicas=3
# 为kiada创建类型为LoadBalancer的Service,暴露8080端口
kubectl expose deployment kiada --type=LoadBalancer --port 8080

内容的提问来源于stack exchange,提问作者mnj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:09:03