一、Ingress介绍
1、Ingress 的核心概念
Ingress 是 Kubernetes 中管理外部流量访问集群内服务的 API 对象,通过 7 层(HTTP/HTTPS)协议实现流量路由、负载均衡和 SSL 终止。它弥补了传统 Service(如 NodePort 和 LoadBalancer)的不足,例如端口占用过多、不支持路径路由等问题。
核心功能:
- 7 层负载均衡:基于域名、URL 路径等规则分发流量到后端服务。
- SSL/TLS 终止:支持 HTTPS 加密,证书可通过 Kubernetes Secret 管理。
- 虚拟主机与路径路由:单入口支持多域名或子路径映射不同服务(如
example.com/service1
和example.com/service2
)。 - 动态配置更新:自动感知后端服务变化并更新代理规则(如 Nginx 配置)。
2、Ingress 的架构与组件
-
Ingress 资源对象
- 定义路由规则的 YAML 文件,例如将
myapp.example.com
的流量导向myapp-service
:-
yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: myapp.example.com http: paths: - path: / backend: service: name: myapp-service port: 80
-
- 定义路由规则的 YAML 文件,例如将
-
Ingress Controller
- 作用:监听 Ingress 规则变化,动态生成反向代理配置(如 Nginx、Traefik)并重载生效。
- 部署形式:
- DaemonSet:每个节点运行一个 Pod,通过
hostNetwork
直接暴露端口。 - Deployment + Service:以 NodePort 或 LoadBalancer 类型对外提供服务。
- DaemonSet:每个节点运行一个 Pod,通过
-
反向代理工具
- 常见工具:Nginx(官方维护版本和社区版)、HAProxy、Traefik。
3、Ingress 和 Service 区别
Ingress 和 Service都是 Kubernetes 中用于将流量路由到应用程序的机制,但它们在路由层面上有所不同: