Linux环境中K8S负载均衡实现路径
在 Linux 上的 Kubernetes 集群中,负载均衡通常分为三层:集群内部的 Service 负载均衡、基于域名的 Ingress 路由与负载均衡,以及面向公网的 外部负载均衡器/高可用 VIP。下面按场景给出可落地的实现方式与关键配置。
一 集群内部 Service 负载均衡
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: ClusterIP
如需从外部访问,可改为 Service: LoadBalancer(云厂商会创建外部负载均衡器)或配合 Ingress 使用。Ingress 本身也是 Kubernetes 资源,需要部署 Ingress Controller(如 Nginx Ingress)后才能生效。二 提升 Service 转发性能 使用 IPVS 模式
三 外部访问与 Ingress 路由负载均衡
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
安装 Controller 后,创建上述 Ingress 即可通过域名访问并自动负载到后端 Pods。若需对外暴露,可结合云厂商的 LoadBalancer Service 或下文的自建外部 LB。四 自建外部负载均衡器与高可用 VIP
frontend http-in
bind *:80
default_backend servers
backend servers
balance roundrobin
server node1 192.168.3.101:80 check
server node2 192.168.3.102:80 check
配合 Keepalived 配置 virtual_ipaddress(如 192.168.2.254/24)与健康检查脚本,实现主备切换与故障剔除。该方案稳定可控,适合对公网入口做统一暴露与高可用。