Kubernetes中ingess以及它和nginx的关系

发布于:2025-08-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

在 Kubernetes 中,Ingress 是管理集群外部与内部服务之间 HTTP/HTTPS 流量的核心资源,而 Nginx 则是实现 Ingress 功能最常用的工具(以 Nginx Ingress Controller 的形式存在)。二者的关系可以概括为:Ingress 是流量规则的“声明”,Nginx 是这些规则的“执行者”。

一、什么是 Ingress?

Ingress 是 Kubernetes 中的一种 API 资源,用于定义从集群外部到集群内服务(Service)的 HTTP/HTTPS 路由规则。它的核心作用是:

• 统一管理外部访问入口(如通过域名访问不同服务);

• 实现路径路由(如 example.com/api 转发到 API 服务,example.com/web 转发到 Web 服务);

• 配置 SSL 证书(HTTPS 加密);

• 提供基本的负载均衡能力(针对后端服务的多个 Pod)。

注意:Ingress 本身只是“规则定义”,不具备实际的流量转发能力,必须依赖 Ingress Controller 才能生效。

二、什么是 Ingress Controller?

Ingress Controller 是一个运行在集群中的 Pod,它的作用是监听 Kubernetes 集群中 Ingress 资源的变化,并将其转换为具体的流量转发配置(如 Nginx 配置),从而实现对外部流量的路由。

常见的 Ingress Controller 有:

• Nginx Ingress Controller(基于 Nginx 实现,最流行);

• Traefik、HAProxy、Istio 等(适用于不同场景)。

三、Ingress 与 Nginx 的关系

Nginx 是一款高性能的 HTTP 服务器和反向代理工具,而 Nginx Ingress Controller 则是将 Nginx 与 Kubernetes 集成的组件,是 Ingress 规则的“执行者”。具体关系如下:

  1. Ingress 定义规则,Nginx 执行规则

◦ 用户通过 YAML 文件定义 Ingress 资源(例如:将 example.com 的流量转发到 web-service);

◦ Nginx Ingress Controller 监听并解析该 Ingress 规则,自动生成对应的 Nginx 配置(如 server 块、location 路由规则);

◦ Nginx 进程根据生成的配置,将外部流量转发到集群内的目标服务。

举例:
一个简单的 Ingress 规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:

  • host: example.com
    http:
    paths:
    • path: /api
      pathType: Prefix
      backend:
      service:
      name: api-service
      port:
      number: 80
    • path: /web
      pathType: Prefix
      backend:
      service:
      name: web-service
      port:
      number: 80
      Nginx Ingress Controller 会将其转换为 Nginx 配置:
      server {
      listen 80;
      server_name example.com;

location /api {
proxy_pass http://api-service:80; # 转发到 api-service
}

location /web {
proxy_pass http://web-service:80; # 转发到 web-service
}
}
2. Nginx 提供底层能力
Nginx Ingress Controller 本质上是一个运行着 Nginx 进程的 Pod,它利用 Nginx 的以下能力实现 Ingress 功能:

◦ 反向代理(将外部流量转发到内部服务);

◦ 负载均衡(对后端服务的多个 Pod 分发流量);

◦ SSL 终止(处理 HTTPS 证书,解密后转发 HTTP 流量到内部);

◦ 路径匹配、重定向、缓存等 HTTP 层特性。

  1. 扩展与定制
    由于基于 Nginx,用户可以通过 ConfigMap 或 Annotation 定制 Nginx 配置(如超时时间、缓存策略、限流等),灵活满足业务需求。

四、总结

• Ingress 是 Kubernetes 中定义 HTTP/HTTPS 路由规则的 API 资源,负责“声明”流量如何转发。

• Nginx 是一款成熟的反向代理工具,通过 Nginx Ingress Controller 与 Kubernetes 集成,成为 Ingress 规则的“执行者”,将规则转换为实际的流量转发行为。

简单来说:Ingress 告诉“该怎么做”,Nginx 负责“具体去做”。


网站公告

今日签到

点亮在社区的每一天
去签到