认识
2024年11月20日
一、认识
Ingress
是 Kubernetes
中用于 HTTP
和 HTTPS
路由的资源,它通过定义规则,将外部请求(基于域名或路径)路由到集群内部的服务(Service
)。相比其他暴露方式(如 NodePort
和 LoadBalancer
),Ingress
更灵活,支持基于域名和路径的流量分发,适合处理复杂的访问需求。
1.1 核心组件
-
Ingress
资源 定义路由规则,告诉Kubernetes
如何将外部流量转发到内部服务。 -
Ingress Controller
具体实现流量管理的组件,例如NGINX
、Traefik
、HAProxy
等。Ingress Controller
负责将Ingress
资源的规则转换为实际的负载均衡配置。
1.2 工作原理
-
用户发送请求到指定的域名或路径。
-
请求由
Ingress Controller
捕获。 -
Ingress Controller
根据Ingress
规则解析请求,找到对应的服务(Service
)。 -
Ingress Controller
将请求转发到服务对应的Pod
。
1.3 优点缺点
Ingress
的优点如下
-
基于域名和路径的路由:支持在同一
IP
下分发流量到多个服务。 -
TLS/HTTPS
支持:提供安全的通信方式。 -
整合服务:简化外部访问配置,不需要为每个服务创建
LoadBalancer
或NodePort
。 -
扩展性:可以通过不同的
Ingress Controller
实现高级功能,如限流、认证。
三、语法
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80