31·Service进阶

Service 是什么

kubernetesservicenetworking

Service 是什么

学习目标

  1. 理解 Service 解决什么问题
  2. 掌握 Service 的核心概念
  3. 了解 Service 与 Pod 的关系

核心概念

一句话解释

Service 是 Kubernetes 中用于暴露一组 Pod 作为网络服务的抽象,提供稳定的访问入口和负载均衡。

解决什么问题

问题:Pod 是临时的
┌─────────────────────────────────────┐
│  Pod 1 (IP: 10.244.1.5)            │
│  Pod 2 (IP: 10.244.2.8)            │
│  Pod 3 (IP: 10.244.1.12)           │
└─────────────────────────────────────┘
问题:
- Pod IP 会变化(重启、扩缩容)
- 如何稳定访问?
- 如何负载均衡?

Service 解决方案:
┌─────────────────────────────────────┐
│  Service (稳定 IP: 10.96.0.100)    │
│  ┌─────────┐  ┌─────────┐         │
│  │  Pod 1  │  │  Pod 2  │  ...    │
│  └─────────┘  └─────────┘         │
└─────────────────────────────────────┘
稳定的访问入口 + 自动负载均衡

Service 核心概念

概念说明作用
ClusterIP集群内部 IP集群内访问
NodePort节点端口外部访问
LoadBalancer负载均衡器云环境外部访问
ExternalName外部名称访问外部服务

Service 与 Pod 的关系

┌─────────────────────────────────────────────┐
│                 Service                     │
│  selector: app: my-app                      │
│  ports: port: 80, targetPort: 8080         │
└─────────────────────────────────────────────┘
        │           │           │
        ▼           ▼           ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│   Pod 1   │ │   Pod 2   │ │   Pod 3   │
│ app:my-app│ │ app:my-app│ │ app:my-app│
│ port:8080 │ │ port:8080 │ │ port:8080 │
└───────────┘ └───────────┘ └───────────┘

Service 工作流程

1. 创建 Service
   └─ 指定 selector 和 ports

2. Endpoints Controller
   └─ 监听 Pod 变化
   └─ 更新 Endpoints 列表

3. kube-proxy
   └─ 维护 iptables/IPVS 规则
   └─ 实现负载均衡

4. 客户端访问
   └─ 访问 Service IP/域名
   └─ 路由到后端 Pod

Service 特性

特性说明
稳定 IPService IP 不会变化
负载均衡自动分发请求到后端 Pod
服务发现通过 DNS 名称访问
健康检查自动移除不健康的 Pod

实践练习

练习 1:理解 Service

回答以下问题:

  1. Service 解决了什么问题?
  2. Service 如何找到后端 Pod?
  3. Service 的访问入口是什么?

练习 2:画图

画出 Service 的架构: Client → Service (ClusterIP) → Pod 1, Pod 2, Pod 3

常见误解

1. Service 不是负载均衡器

Service:服务抽象
LoadBalancer:负载均衡器实现

Service 包含负载均衡功能,但不仅仅是负载均衡

2. Service 不需要手动配置 Pod IP

错误:手动指定 Pod IP
正确:使用 selector 自动匹配 Pod

Service 通过 label selector 自动发现 Pod

小结

要点说明
Service服务抽象层
稳定入口提供稳定的访问 IP/域名
负载均衡自动分发请求到后端 Pod
服务发现通过 DNS 名称访问
核心价值解决 Pod IP 变化问题

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「Service 类型」 以巩固所学知识。