跳到主要内容

认识

2024年11月20日
柏拉文
越努力,越幸运

一、认识


IngressKubernetes 中用于 HTTPHTTPS 路由的资源,它通过定义规则,将外部请求(基于域名或路径)路由到集群内部的服务(Service)。相比其他暴露方式(如 NodePortLoadBalancer),Ingress 更灵活,支持基于域名和路径的流量分发,适合处理复杂的访问需求。

1.1 核心组件

  • Ingress 资源 定义路由规则,告诉 Kubernetes 如何将外部流量转发到内部服务。

  • Ingress Controller 具体实现流量管理的组件,例如 NGINXTraefikHAProxy 等。Ingress Controller 负责将 Ingress 资源的规则转换为实际的负载均衡配置。

1.2 工作原理

  1. 用户发送请求到指定的域名或路径。

  2. 请求由 Ingress Controller 捕获。

  3. Ingress Controller 根据 Ingress 规则解析请求,找到对应的服务(Service)。

  4. Ingress Controller 将请求转发到服务对应的 Pod

1.3 优点缺点

Ingress 的优点如下

  1. 基于域名和路径的路由:支持在同一 IP 下分发流量到多个服务。

  2. TLS/HTTPS 支持:提供安全的通信方式。

  3. 整合服务:简化外部访问配置,不需要为每个服务创建 LoadBalancerNodePort

  4. 扩展性:可以通过不同的 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