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.mzph.cn/pingmian/66442.shtml

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

相关文章

任务调度之Quartz(二):Quartz体系结构

1、Quartz 体系结构 由上一篇的Quartz基本使用可以发现,Quartz 主要包含一下几种角色: 1)Job:也可以认为是JobDtetail,表示具体的调度任务 2)Trigger:触发器,用于定义任务Job出发执行…

十五、Vue 响应接口

文章目录 一、响应式系统基础什么是响应式系统响应式数据的声明与使用二、响应式原理深入Object.defineProperty () 方法的应用(Vue2)Proxy 对象的应用(Vue3)三、响应式接口之 ref 和 reactive(Vue3)ref 函数的使用reactive 函数的使用四、计算属性(computed)作为响应式…

Nature Electronics——近传感器计算:50 nm异构集成技术的革命

创新点:1.高密度互联设计:基于二维材料,开发出互连密度高达62,500 I/O每平方毫米的M3D集成结构。2.异构层堆叠:整合了第二层石墨烯化学传感器和第一层MoS₂记忆晶体管,实现功能互补。3.超短传感器与计算元件距离&#…

Ubuntu 安装 Java 1.8

如果你希望使用 Oracle JDK 8,可以按照以下步骤操作: 下载 Oracle JDK 8: 访问 Oracle 官方网站 下载适用于 Ubuntu 的 JDK 8 版本 安装 Oracle JDK 8: 将下载的 JDK 8 压缩包解压到一个目录中,例如 /opt/module&…

字节青训入营考核十五题-Java-找单独的数

问题 问题描述 在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。 要求&#xff…

Unity学习之UGUI(三)

十二、Slider 1、作用 Slider是滑动条组件,是UGUI中用于处理滑动条相关交互的关键组件 创建Slider默认包括4个对象 父对象:Slider组件依附的对象 子对象:背景图,进度图,滑动块三组对象 2、主要参数 3、代码控制 voi…

win下搭建elk并集成springboot

一、ELK 是什么? ELK 实际上是三个工具的集合,Elasticsearch Logstash Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。 ElasticSearch ElasticSearch 是一个基于 Lucen…

基于微信小程序疫苗预约系统ssm+论文源码调试讲解

第四章 系统设计 到目前为止,市面上已经存在了各种各样的软件系统,从系统的分类着手,主要应用范围倾向于办公系统,娱乐系统,社交系统,然后下面有很多比较细的分支系统。很多系统已经经过了市场的考验&…

MySQL慢查询问题排查

第一步:查看当前正在运行的事务状态 select trx_state,trx_started,trx_mysql_thread_id,trx_query from information_schema.innodb_trx; 其中: Trx_state:事务状态 Trx_started:事务启动时间 Trx_mysql_thread_id&…

c++领域展开第十幕——类和对象(内存管理——c/c++内存分布、c++内存管理方式、new/delete与malloc/free区别)超详细!!!!

文章目录 前言一、c/c内存分布二、c的内存管理方式2.1new/delete操作内置类型2.2new和delete操作自定义类型 三、operator new与operator delete函数3.1operator new与operator delete函数 四、new和delete的实现原理4.1 内置类型4.2 自定义类型 五、malloc/free和new/delete的…

MacBook_Xcode_Swift雨燕

Swift Swift Swift Swift是苹果公司开发的现代化编程语言, 专为Apple平台设计。其简洁语法、类型安全、Optionals处理、Playgrounds交互式环境、泛型编程、协议与扩展、闭包功能、枚举与关联值、结构体与类的高效内存管理、异步编程的async/await语法、Swift Packa…

QT自定义工具条渐变背景颜色一例

使用样式定义: QWidget* toolbar new QWidget(this);toolbar->setObjectName("main_tool");toolbar->setStyleSheet("#main_tool{background: qlineargradient(x1:0 , y1:0 , x2:1 , y2:0,""stop:0 rgba(0,255,0, 0.2),"&q…

Flutter 鸿蒙化 flutter和鸿蒙next混和渲染

前言导读 这一个节课我们讲一下PlatformView的是使用 我们在实战中有可能出现了在鸿蒙next只加载一部分Flutter的情况 我们今天就讲一下这种情况具体实现要使用到我们的PlatformView 效果图 具体实现: 一、Native侧 使用 DevEco Studio工具打开 platform_view_example\oho…

React Native 项目 Error: EMFILE: too many open files, watch

硬件:MacBook Pro (Retina, 13-inch, Mid 2014) OS版本:MacOS BigSur 11.7.10 (20G1427) 更新: 删除modules的方法会有反弹,最后还是手动安装了预编译版本的watchman。 React Native 项目运行npm run web,出现如下错误&#xff1a…

倾斜摄影相机在不动产确权登记和权籍调查中的应用

一、项目背景 1.1 项目背景 为贯彻落实中央、国务院关于实施乡村振兴战略、关于“扎实推进房地一体的农村集体建设用地和宅基地使用权确权登记颁证,完善农民闲置宅基地和闲置农房政策,探索宅基地所有权、资格权、使用权‘三权分置’”的要求&#xff0…

2.1.7-1 io_uring的使用

一、背景 (1)下面几个有关异步操作的例子: a)客户端和服务端的异步关系,就是客户端发送请求后不需要等待结果,接下来发送其他请求。 b)对于服务端,客户端来请求后,服务…

Lua开发环境如何安装?保姆级教程

大家好,我是袁庭新。Lua开发环境如何安装搭建?这套篇文章帮你搞定~ CentOS 7系统默认已经安装了Lua语言环境,因此可直接运行Lua代码。可以使用以下命令查看当前系统中默认自带的Lua版本。 # 查看系统默认自带的Lua版本 [rootloc…

SpringBoot入门之创建一个Hello World项目

文章目录 一、使用传统的方式1、创建一个SpringBoot项目2、配置pom.xml文件3、下载Maven依赖4、创建一个Controller类:com.devops.controller.HelloController5、创建一个引导类:com.devops.HelloApplication6、启动项目8、访问80809、完整项目结构 二、…

搜索引擎是如何理解你的查询并提供精准结果的?

目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 (一)整体分析 (二)爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 (三)索引系统 网页处理阶段 预处理阶段 反作弊分析…

vulnhub靶场-potato(至获取shell)

arp-scan -l 扫描IP 使用御剑端口扫描扫描端口,扫到了80和7120两个端口,其中7120为ssh端口 使用dirb http://192.168.171.134 扫描目录 发现info.php 访问为phpinfo界面 访问192.168.171.134为一个大土豆,没什么用 所以我们从ssh入手 盲…