svc与ep的关系与使用场景

Kubernetes Service (SVC) 和 Endpoints (EP) 概述

Service (SVC)

定义

Service 是 Kubernetes 中用于暴露应用的一个抽象方式,定义了如何访问一组特定的 Pod。

主要类型

  • ClusterIP:仅在集群内部可访问的内部 IP。
  • NodePort:在集群的所有节点上打开一个端口,允许从集群外部访问。同时仍然有内部IP与端口。
  • LoadBalancer:集成外部负载均衡器。

作用

  • 提供 Pod 的稳定 IP 地址和端口号。
  • 支持多种访问方式,如仅限集群内或集群外访问。
  • 实现 Pod 的服务发现和负载均衡。

Endpoints (EP)

定义

Endpoints 是 Kubernetes 中的一个资源对象,定义了访问 Service 的一组网络地址。

功能

  • 包含一组 Pod 的 IP 地址和端口号,这些 Pod 被 Service 选择,注意是一组。
  • 是实现负载均衡和服务发现的关键。

关系和相互作用

  • 一对一关系:每个 Service 通常对应一个 Endpoints 对象,通过一样的名称来一一对应。
  • Service 通过标签选择器来选择 Pod,Endpoints 对象反映了这些 Pod 的实际网络地址。
  • Endpoints 对象通常是自动创建的,根据 Service 的配置和 Pod 的实际状态更新。
  • 也可以手动创建一个同名的svc和ep,ep中指定外部地址,来做到通过内部svc的名称访问外部服务。

使用场景

  • ClusterIP:适用于只需要在 Kubernetes 集群内部进行服务间通信的场景。
  • NodePort:适用于需要从集群外部访问服务的情况。

注意事项

  • 确保 Service 的 targetPort 与 Pod 上的实际端口一致。
  • 避免手动编辑 Endpoints 对象,让 Kubernetes 根据实际情况自动管理。

具体使用

  • service中指定名称(name),监听端口号(port),转发端口号(targetPort)
  • ep指定名称(name)一组pod的地址(ip)和pod的端口号(port)