当前位置: 首页 > news >正文

Kubernetes中ingess以及它和nginx的关系

在 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 负责“具体去做”。

http://www.dtcms.com/a/313674.html

相关文章:

  • 单表查询-模糊匹配
  • CMake 命令行参数完全指南(4)
  • sqli-labs靶场less26/a
  • awk对文本进行列处理
  • 【实习总结】Qt通过Qt Linguist(语言家)实现多语言支持
  • 抖音全新推荐大模型RankMixer
  • 【AI论文】ScreenCoder:通过模块化多模态智能体推动前端自动化中的视觉到代码生成技术发展
  • 从零开始实现Qwen3(Dense架构)
  • Linux 环境下 Docker 安装与简单使用指南
  • 7.28-8.3周报
  • 控制建模matlab练习10:滞后补偿器
  • OSPF笔记及综合实验报告册
  • 嵌入式 Linux 系统构建的核心组件详解
  • Go 工程化全景:从目录结构到生命周期的完整服务框架
  • 【openlayers框架学习】六:绘制点、圆、文字标注
  • 关于vllm【常见问题解决方案】
  • XtraBackup备份与恢复
  • Python 程序设计讲义(61):Python 的函数——变量的作用域
  • 【运维基础】Linux 硬盘分区管理
  • [Oracle] DUAL数据表
  • [自动化Adapt] 录制引擎 | iframe 穿透 | NTP | AIOSQLite | 数据分片
  • 第二节 YOLOv5参数
  • Python 程序设计讲义(59):Python 的函数——labmda函数(匿名函数)
  • 四、驱动篇-HDF驱动介绍2
  • sublime 乱码问题
  • JavaEE文件泄露与修复方案
  • Linux | i.MX6ULL移植 Gdb+Gdbserver 调试(第十四章)
  • 深入解析 Linux Kernel 中的设备树:使用、修改与实际应用
  • 经典文献阅读之--ViNT(视觉导航的基础模型)
  • 《汇编语言:基于X86处理器》第11章 MS-Windows编程(3)