什么是 Kubernetes Service?

Kubernetes Service 是一种网络抽象层,让集群内部运行的多个 Pod 通过一个统一的稳定访问入口暴露出来。这种方式 避免了因 Pod IP 地址的不断变化而导致客户端配置频繁更新或请求失败
Kubernetes Service 同时具备负载均衡功能,将请求分发给后端 Pod。

Kubernetes Service 类型

Kubernetes 提供五种主要的 Service 类型,根据访问方式不同适用于不同场景:

  • ClusterIP(默认):仅在集群内部访问,提供内部稳定 IP。
  • NodePort:在每个 Node 上开放静态端口,允许外部访问,同时仍保留 ClusterIP。
  • LoadBalancer:在云平台上创建外部负载均衡器,自动转发流量,包含 NodePort 和 ClusterIP。
  • ExternalName:将 Service 映射到外部 DNS 名,不关联后端 Pod,不提供负载均衡。
  • Headless Service:不分配 ClusterIP,DNS 直接返回 Pod IP 地址,便于客户端自行选择 Pod 访问。

各类型 Service 的对比表

以下是不同 Service 类型的对比、用途和连接方式:

类型 可访问范围 典型用途 连接方式
ClusterIP 集群内部 内部服务间通信(如后端服务) ClusterIP:port
NodePort 外部(通过节点) 简易暴露,适合测试或开发场景 NodeIP:nodePortClusterIP
LoadBalancer 外部(云平台) 公网服务,生产环境常用 LB → NodePort → ClusterIP
ExternalName 集群内部 将 Service 映射到外部域名 DNS 名 → 外部域名
Headless 集群内部 允许客户端直接访问 Pod(无代理) DNS 返回 Pod IP 列表

为什么要使用不同类型的 Service?

  • ClusterIP:保证集群内部应用可以稳定访问后端 Pods,不受 Pod IP 变动影响。
  • NodePort:在无外部 Load Balancer 支持的环境下,也能实现基础外部访问。
  • LoadBalancer:具备高可用外部接入能力,但通常依赖云平台资源。
  • ExternalName:便于在集群内引用第三方服务而无需直接依赖其 IP。
  • Headless Service:适用于需要客户端自己决定 Pod 目标(如自定义负载均衡)的特殊场景。