在 Kubernetes (K8s) 中,Service 是一种抽象,它定义了一种访问 Pod 的方式,无论背后 Pod 的数量如何变化。Service 为一组执行相同功能的 Pod 提供一个稳定的接口和地址(通常是一个 IP 场址和端口),客户端只需通过这个接口访问服务,而无需关心后端 Pod 的具体情况。
核心特性
- 稳定的访问点:Service 提供一个稳定的 IP 地址和端口,客户端可以通过这个地址访问后端的一组 Pod,即使 Pod 发生扩缩容或更新。
- 负载均衡:Service 可以对后端的 Pod 进行负载均衡,将外部请求分发到所有健康的 Pod 上。
- 服务发现:Kubernetes 通过内部 DNS 支持基于 Service 名称的服务发现,使得 Pod 之间可以通过 Service 名称进行通信。
Service 类型
Kubernetes 提供了几种类型的 Service,以适应不同的访问和曝露服务的需求:
- ClusterIP(默认类型):分配一个内部的 IP 地址给 Service,使得 Service 只能在集群内部访问。这是默认的 Service 类型。
- NodePort:在每个节点上打开一个静态端口(NodePort),并将该端口路由到 Service。这允许从集群外部通过
<NodeIP>:<NodePort>
访问 Service。