Kubernetes 服务资源详解:Service、Ingress、Gateway API 一文读懂¶
文章摘要¶
在 Kubernetes 中,Pod 是应用运行的载体,但 Pod IP 并不固定。
当 Pod 重建、扩容或迁移节点时,其 IP 地址可能发生变化。
为了让应用能够被稳定访问,Kubernetes 提供了一套完整的服务资源体系。
本文将从资源对象的角度,系统讲解 Service、EndpointSlice、Ingress、IngressClass 以及 Gateway API 的作用与关系。
学习目标¶
阅读完本文后,你将掌握:
- Kubernetes 服务资源体系
- Service 的作用
- EndpointSlice 的作用
- Ingress 的作用
- IngressClass 的作用
- Gateway API 的定位
- 服务发现流程
- 对外访问流程
适用人群¶
本文适合:
- Kubernetes 初学者
- Linux 运维工程师
- DevOps 工程师
- 云原生学习者
- Kubernetes 面试准备人员
什么是服务资源?¶
服务资源(Service Resources)主要解决两个问题:
服务发现(Service Discovery)¶
找到目标 Pod。
流量访问(Traffic Access)¶
让用户能够访问应用。
例如:
或者:
服务资源就是实现这些能力的核心对象。
Kubernetes 服务资源体系¶
整体结构如下:
在较新的架构中:
Service¶
Service 是 Kubernetes 最基础的服务资源。
作用:
例如:
Service:
客户端只访问:
即可。
Service 类型¶
常见类型:
| 类型 | 作用 |
|---|---|
| ClusterIP | 集群内部访问 |
| NodePort | 节点端口访问 |
| LoadBalancer | 云负载均衡 |
| ExternalName | 外部服务映射 |
生产环境最常见:
EndpointSlice¶
很多人知道 Service。
却不知道真正记录 Pod 地址的是:
查看:
例如:
这些才是真正的后端地址。
为什么需要 EndpointSlice?¶
早期 Kubernetes 使用:
对象。
当集群规模变大:
时。
Endpoints 对象会变得非常庞大。
因此引入:
进行拆分管理。
EndpointSlice 优势¶
- 更高扩展性
- 更低 API 压力
- 更适合大规模集群
Ingress¶
Ingress 是 Kubernetes 最常见的南北向流量入口资源。
作用:
管理。
例如:
转发:
或者:
转发:
Ingress 能做什么?¶
支持:
域名路由¶
路径路由¶
HTTPS¶
TLS 证书管理。
负载均衡¶
请求分发。
IngressClass¶
很多人忽略这个资源。
作用:
例如:
或者:
或者:
IngressClass 类似:
例如:
表示:
Gateway API¶
这是 Kubernetes 未来重点发展的方向。
可以理解为:
相比 Ingress:
支持更复杂流量治理。
主要资源:
GatewayClass¶
定义实现。
Gateway¶
定义入口。
HTTPRoute¶
定义路由规则。
关系:
Service 与 Ingress 的区别¶
很多面试都会问。
| 项目 | Service | Ingress |
|---|---|---|
| 作用 | 服务发现 | 流量入口 |
| 工作层级 | L4 | L7 |
| 访问对象 | Pod | Service |
| HTTPS | 不负责 | 支持 |
简单记忆:
Gateway API 与 Ingress 的区别¶
| 项目 | Ingress | Gateway API |
|---|---|---|
| 功能 | 基础 | 强大 |
| 扩展性 | 一般 | 很强 |
| 路由能力 | 有限 | 丰富 |
| 多团队管理 | 较弱 | 优秀 |
未来趋势:
逐步替代部分 Ingress 场景。
服务发现流程¶
Pod 访问:
流程:
整个过程无需关心 Pod IP。
用户访问流程¶
访问:
流程:
这是生产环境最常见流量路径。
生产环境最佳实践¶
内部访问使用 ClusterIP¶
默认推荐。
对外访问统一走 Ingress¶
避免大量 NodePort。
使用 EndpointSlice¶
不要依赖旧 Endpoints。
新项目关注 Gateway API¶
未来发展方向。
常见故障排查¶
查看 Service:
查看 EndpointSlice:
查看 Ingress:
查看 IngressClass:
查看 Gateway:
查看 HTTPRoute:
面试常见问题¶
Service 的作用是什么?¶
提供稳定访问入口。
EndpointSlice 的作用是什么?¶
维护后端 Pod 地址。
Ingress 的作用是什么?¶
管理 HTTP/HTTPS 流量入口。
IngressClass 是什么?¶
指定 Ingress Controller。
Gateway API 是什么?¶
下一代 Kubernetes 流量管理标准。
FAQ¶
没有 Service 可以访问 Pod 吗?¶
可以。
但不推荐。
Ingress 可以直接访问 Pod 吗?¶
不能。
通常通过 Service。
Gateway API 会取代 Ingress 吗?¶
短期不会。
长期可能逐步替代部分场景。
总结¶
Kubernetes 服务资源体系负责实现服务发现与流量访问。
其中:
- Service 提供稳定访问入口
- EndpointSlice 管理后端地址
- Ingress 管理 HTTP/HTTPS 流量
- IngressClass 指定控制器
- Gateway API 提供下一代流量治理能力
可以记住一句话:
Service 连接 Pod,Ingress 连接用户,而 Gateway API 正在定义 Kubernetes 流量管理的未来。