Kubernetes 中的 Service 类型主要有以下四种:
- ClusterIP:默认类型,为集群内部提供通信,仅允许集群内 Pod 或组件访问。适用于微服务间内部调用或数据交互。
- NodePort:在 ClusterIP 基础上,通过节点(Node)的静态端口暴露服务,允许外部通过
NodeIP:Port
访问。适合临时调试或需要直接访问的场景。 - LoadBalancer:依赖云厂商的负载均衡器(如 AWS ALB、GCP LB),自动分配外部 IP 并路由流量。适用于生产环境对外暴露服务。
- ExternalName:通过返回 CNAME 记录将服务映射到外部 DNS,用于集成集群外服务(如数据库)。
选择策略:
- 仅集群内部访问 → ClusterIP。
- 需要外部访问且环境支持云负载均衡器 → LoadBalancer(生产推荐)。
- 简单测试或非云环境 → NodePort。
- 混合云或跨集群集成 → ExternalName。
- 需精细 HTTP 路由 → 结合 Ingress Controller + LoadBalancer。
特殊场景:
- Headless Service(ClusterIP 设为
None
):用于无代理直接访问 Pod(如 StatefulSet 的数据库节点)。 - 性能与成本:LoadBalancer 可能产生云资源费用,NodePort 需手动管理端口安全策略。