Service服务发现(四层流量负载均衡)
一,核心背景
Pod IP是动态的,重建/漂移后IP会发生变化,无法直接作为固定访问地址。Service提供稳定虚拟IP(ClusterIP)+DNS域名,统一接入一组Pod,实现四层负载均衡,屏蔽Pod动态变化。
1.Service底层转发原理
1)流量链路:客户端请求>Service虚拟IP>Endpoints(健康Pod列表)>真实pod
2)kube-proxy两种代理模式比对
iptables(默认):内核iptables链式规则,仅随机负载均衡,上千条规则后性能衰减,中小集群使用。
ipvs:内核哈希表,支持轮询,最小连接等多种调度算法,海量服务性能稳定,大型生产集群首选。
2.Service四大类型完整实战
1)ClusterIP(默认)
仅集群内部可访问,分配内网虚拟IP,用于微服务内部调用。配置port(服务端口),targetPort(pod容器端口)
2)NodePort
在所有节点开放30000~32767固定端口。外部通过节点IP:端口访问,适合临时测试。
3)headless(无头服务,clusterIP:Node)
不分配虚拟IP,DNS直接返回所有后端Pod真实IP,StatefulSet有状态服务专用(Mysql,redis集群),保证每个pod独立域名。
4)loadBalan云厂商原生提供公网负载均衡;裸机vm环境通过metailb模拟,分配独立外网IP,生产对外标准方案。
3.lngress七层网关基础
Service仅四层端口转发,ingress实现域名,路径L7路由。
部署nginx ingress Controller控制器;
编写ingress规则绑定域名,路径到后端Service;
本地hosts绑定域名即可浏览器访问。
