Kubernetes Ingress:流量管理的利器

在 Kubernetes 集群中,服务之间的通信和外部流量的引入通常是至关重要的。虽然 NodePortLoadBalancer 是最常见的解决方案,但当集群内部的服务逐渐增多时,管理不同服务的流量变得复杂。这个时候,Ingress 作为一种强大的流量管理工具,便应运而生。

本文将深入探讨 Kubernetes Ingress 的工作原理、主要功能、配置方法以及它与传统 Service 方式的对比,帮助你更好地理解和使用 Ingress。


什么是 Kubernetes Ingress?

Ingress 是 Kubernetes 中的一种资源类型,用于管理 HTTP 和 HTTPS 流量的路由。它允许你根据域名、路径等规则,将外部流量引导到集群内部的不同服务。Ingress 的出现极大简化了流量管理,尤其在多服务、多环境的场景下,它为流量路由提供了一个集中的配置点。

Ingress 并不是一个直接的负载均衡器,而是通过 Ingress 控制器 来实现流量的路由、负载均衡、SSL 终止等功能。常见的 Ingress 控制器包括 Nginx、Traefik 和 HAProxy 等。


Ingress 的主要功能

  1. 基于路径的流量路由
    Ingress 允许你根据 HTTP 请求的路径将流量路由到不同的服务。例如,访问 example.com/api 时,流量将被转发到 service-api,而访问 example.com/web 时,流量将被转发到 service-web

  2. TLS/SSL 终止
    通过配置 Ingress,你可以方便地启用 HTTPS 访问,并配置 SSL 证书。Ingress 控制器会负责处理 SSL 终止(即处理加密解密的工作),而将解密后的请求转发到后端服务。

  3. 负载均衡
    Ingress 控制器会自动为服务提供负载均衡的功能。对于多个后端实例,Ingress 控制器会根据负载均衡算法(如轮询、加权轮询等)将请求分发到不同的服务实例。

  4. 路径重写和自定义规则
    使用注解和 Ingress 控制器的配置,可以对请求路径进行重写,例如将 /old-path 转发到 /new-path。这对于版本迁移、API 路径更改等场景非常有用。

  5. 集中的流量管理
    Ingress 允许你在一个地方集中管理所有流量路由规则,而不必为每个服务单独创建 NodePortLoadBalancer 服务。这简化了配置并减少了资源消耗。


Ingress 资源示例

以下是一个简单的 Ingress 配置文件示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: example.comhttp:paths:- path: /apipathType: Prefixbackend:service:name: service-apiport:number: 80- path: /webpathType: Prefixbackend:service:name: service-webport:number: 80

在这个示例中,所有访问 example.com/api 的请求将被路由到 service-api 服务,而访问 example.com/web 的请求将被路由到 service-web 服务。通过注解 nginx.ingress.kubernetes.io/rewrite-target: /,我们可以对路径进行重写,确保转发到后端服务时路径正确。


Ingress 与传统 Service 对比

特性Service (NodePort/LoadBalancer)Ingress
流量路由每个服务暴露一个独立的端口通过域名和路径动态路由流量
HTTPS 支持手动配置 LoadBalancer 或证书内建 TLS/SSL 支持
复杂性简单但灵活性较低配置灵活,功能丰富,管理集中
资源消耗每个服务需要独立的 LoadBalancer(成本较高)共享同一控制器资源

Ingress 相比传统的 NodePortLoadBalancer 更加高效,尤其在需要管理多个服务时。Ingress 通过一个 IP 地址和端口处理多个服务的流量,减少了资源消耗和管理复杂度。


常见的 Ingress 控制器注解

Ingress 控制器通过注解来实现一些特定功能。以 Nginx 为例,常见的注解包括:

  • 路径重写
    nginx.ingress.kubernetes.io/rewrite-target: /new-path
    该注解允许你将请求的路径进行重写,常用于版本迁移或 API 路径更新。

  • 限流
    nginx.ingress.kubernetes.io/limit-connections: "20"
    设置最大连接数限制,防止恶意攻击或流量过载。

  • 请求超时
    nginx.ingress.kubernetes.io/proxy-read-timeout: "30"
    配置请求超时时间,避免长时间没有响应的请求阻塞。

  • 跨域支持
    nginx.ingress.kubernetes.io/enable-cors: "true"
    启用跨域资源共享(CORS),以支持不同域之间的 API 调用。

这些注解能够帮助你灵活地调整 Ingress 行为,满足特定的业务需求。


总结

Kubernetes 的 Ingress 是一个功能强大的流量管理工具,适用于在复杂集群中处理多服务的流量路由。通过灵活的配置,Ingress 可以帮助你集中管理 HTTP/HTTPS 流量,提供负载均衡、TLS 终止、路径重写等功能。与传统的 NodePortLoadBalancer 服务相比,Ingress 可以更加高效和集中地处理流量,尤其在多域名、多服务的场景中,能极大简化资源管理。

无论你是构建微服务架构、管理 API 网关,还是简化 HTTPS 配置,Ingress 都是一个不可或缺的工具。如果你还没有使用过 Ingress,建议尽早在你的 Kubernetes 集群中尝试并配置它!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503622.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poi-tl+kkviewfile实现生成pdf业务报告

需求背景,需要把ai生成的一些业务数据,生成一份pdf报告 需求分析 简单来说,就是json生成pdf的方案。 直接生成pdf。适合一些pdf样式简单的场景,一般就是纯文本按序渲染,或者是纯表格。如果需要一些复杂的排布&#x…

重温设计模式--13、策略模式

策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…

nginx http反向代理

系统:Ubuntu_24.0.4 1、安装nginx sudo apt-get update sudo apt-get install nginx sudo systemctl start nginx 2、配置nginx.conf文件 /etc/nginx/nginx.conf,但可以在 /etc/nginx/sites-available/ 目录下创建一个新的配置文件,并在…

Sam Altman发布博客,回顾OpenAI九年历程,直言目标已瞄准ASI超级人工智能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

简单的jmeter数据请求学习

简单的jmeter数据请求学习 1.需求 我们的流程服务由原来的workflow-server调用wfms进行了优化,将wfms服务操作并入了workflow-server中,去除了原来的webservice服务调用形式,增加了并发处理,现在想测试模拟一下,在一…

C++编程基础之override关键字

在C中,override关键字用于显式地标识派生类中的成员函数是对基类中虚函数的重写,具有以下重要作用和使用说明: 作用 增强代码可读性:通过使用override关键字,能够清晰地向阅读代码的人表明该函数是有意重写基类中的虚…

Leecode刷题C语言之按键变更的次数

执行结果:通过 执行用时和内存消耗如下: int countKeyChanges(char* s) {int count0,i0;while(s[i]!\0){if((s[i]!s[i1])&&(s[i]!(s[i1]32))&&(s[i]!(s[i1]-32))&&s[i1]!0)count;i;}return count; }解题思路: 初始化变量&…

免费一键图片转3D模型,AI建模,一键把图片转三维模型,二维图片转3维模型,AI建模

免费一键图片转3D模型,AI建模,一键把图片转三维模型,二维图片转3维模型,AI建模,公测版,每天不定时免费开放,非常强大 1咱们先打开ai.glbxz.com http://ai.glbxz.com 22 2导入图片。支持单张和多张图片生成…

vue3中el-table实现多表头并表格合并行或列

1、el-table中添加事件 :span-method"genderSpanCity" <el-table :span-method"genderSpanCity":data"data.tableData":fit"true" table-layout"fixed" header-align"center" stripestyle"width:100%;he…

GOAT‘S AI早鸟报Part9

资讯 英伟达重磅发布5090&#xff0c;定价15000 老黄重磅发布5090&#xff0c;定价15000&#xff01;22000元的世界最小AI超级计算机也来了 英伟达在CES发布了最新的GPU——RTX 5090&#xff0c;采用Blackwell架构&#xff0c;具备920亿个晶体管&#xff0c;4000 AI TOPS的AI…

【STM32+CubeMX】 新建一个工程(STM32F407)

相关文章&#xff1a; 【HAL库】 STM32CubeMX 教程 1 --- 下载、安装 目录 第一部分、新建工程 第二部分、工程文件解释 第三部分、编译验证工程 友情约定&#xff1a;本系列的前五篇&#xff0c;为了方便新手玩家熟悉CubeMX、Keil的使用&#xff0c;会详细地截图每一步Cu…

HTML5实现喜庆的新年快乐网页源码

HTML5实现喜庆的新年快乐网页源码 前言一、设计来源1.1 主界面1.2 关于新年界面1.3 新年庆祝活动界面1.4 新年活动组织界面1.5 新年祝福订阅界面1.6 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现喜庆的新年快乐网页源码&#xff0c;春节新年网…

鸿蒙的APP真机调试以及发布

目录&#xff1a; 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 &#xff08;1&#xff09;在File->Project Structure->Project->Signing Configs中进行登录。(未…

概率基本概念 --- 离散型随机变量实例

条件概率&独立事件 随机变量 - 离散型随机变量 - 非离散型随机变量 连续型随机变量奇异性型随机变量 概率表示 概率分布函数概率密度函数概率质量函数全概率公式贝叶斯公式 概率计算 数学期望方差协方差 计算实例 假设有两个离散型随机变量X和Y&#xff0c;它们代…

【Linux】Linux指令apt、systemctl、软链接、日期时区

一、apt命令 1.1 Linux系统的应用商店 操作系统安装软件有许多种方式&#xff0c;一般分为&#xff1a; 下载安装包自行安装 如win系统使用exe文件、msi文件等如mac系统使用dmg文件、pkg文件等 系统的应用商店内安装 如win系统有Microsoft Store商店如mac系统有AppStore商…

OSI模型的网络层中产生拥塞的主要原因?

&#xff08; 1 &#xff09;缓冲区容量有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 2 &#xff09;传输线路的带宽有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 3 &#xff09;网络结点的处理能力有限&#xff1b;&#xff08; 1 分…

C++list

1. list的介绍及使用 1.1list的介绍 list的文档介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双相迭代 2.list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过…

Java 日期时间格式化标准

文章目录 Java日期时间格式化符号ISO 8601中的日期时间ISO 8601标准的定义ISO 8601日期时间格式 周数年份ISO 8601中的周数年份Java中的周数年份 Java跨年日期格式化BUG注意事项 Java日期时间格式化符号 JDK官网截图&#xff1a; 格式化符号梳理&#xff1a; 符号描述符号用…

【计算机视觉】单目深度估计模型-Depth Anything-V2

概述 本篇将简单介绍Depth Anything V2单目深度估计模型&#xff0c;该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比&#xff0c;V2版本通过采用合成图像训练、增加教师模型容量&#xff0c;并利用大规模伪标签现实数据进行学…

如何在Windows上编译OpenCV4.7.0

前言 ​ 参考&#xff1a;Win10 下编译 OpenCV 4.7.0详细全过程&#xff0c;包含xfeatures2d 这里在其基础上还出现了一些问题&#xff0c;仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件&#xff1a; 通…