Kubernetes-03:Service
1.ClusterIP类型
ClusterIP 是 Kubernetes 默认的 Service 类型,在集群内部创建一个虚拟 IP(VIP)作为统一访问入口,仅允许集群内 Pod 互相访问。
通过 kube-proxy 监听 API Server 的 Service 变化
配置 iptables/IPVS 规则,将发往 ClusterIP 的请求负载均衡到后端 Pod
基于 Endpoints 对象动态关联健康 Pod
有以下作用:
·服务发现:Pod 可通过 Service 名称(如 my-svc.default.svc.cluster.local)访问后端。
·负载均衡:自动将流量分发到多个 Pod。
·解耦:前端应用无需感知后端 Pod IP 变化。
2.NodePort类型
在 ClusterIP 基础上,在每个节点上开放一个静态端口(默认范围 30000-32767),使外部流量可通过 节点IP:端口 访问服务。
3.Headless类型
通过设置 clusterIP: None 创建无虚拟 IP 的 Service,直接返回后端 Pod IP 列表而非代理流量。
DNS 查询返回所有 Pod 的 A 记录(如 pod-ip1, pod-ip2)
客户端自行选择 Pod 直连
StatefulSet 的 Pod 会获得唯一 DNS 名称(如 web-0.nginx)
适用于以下情况:
·有状态服务:配合 StatefulSet 实现 Pod 级服务发现(如数据库主从)。
·自定义负载均衡:客户端直接控制流量分发。
·批处理系统:任务调度器直接通信 Worker Pod
4.LoadBalancer类型
云厂商集成的外部负载均衡器,自动创建云平台的 LB(如 AWS ELB、GCP Cloud LB)并分配公网 IP。原理如下:
·向云平台API发起LB创建请求
·将节点配置为LB后端
·外部流量经 LB 分配到节点,再通过 NodePort 到 Pod
5.Ingress控制器
HTTP/HTTPS 流量的七层网关,通过规则实现域名、路径路由到不同 Service(需配合 Ingress Controller 使用)。
Ingress 资源:定义路由规则(如 host: example.com, path: /api)
Ingress Controller(如 Nginx/ Traefik):监听规则变化并动态配置代理服务器
外部流量先到达 Controller,再按规则转发到后端 Service
核心功能对比表
Service类型 | 访问范围 | 网络层级 | 典型场景 |
ClusterIP | 集群内部 | L4 | 微服务间通信 |
NodePort | 节点IP+端口 | L4 | 开发测试环境暴露服务 |
Headless | 集群内部 | DNS直连 | 数据库集群/Pod 直连 |
LoadBalancer | 公网 | L4 | 云环境生产服务暴露 |
Ingress | 公网/域名 | L7 | HTTP 路由管理和 TLS 终止 |