Ingress Controller

什么是 Ingress Controller ? 

在云原生生态中,通常来讲,入口控制器( Ingress Controller )是 Kubernetes 中的一个关键组件,用于管理入口资源对象。

     Ingress 资源对象用于定义来自外网的 HTTP 和 HTTPS 规则,以控制进入集群内服务的流量。而 Ingress Controller 则是真正实现  Ingress 规则的组件。

从更为准确的角度而言,入口控制器( Ingress Controller )管理 L4 和 L7 层请求的南北向流量,也就是我们所说的从集群外部进入或离开集群的流程。它通过解析 Ingress资源对象,配置负载调度规则,将外部请求按照域名、路径等规则转发到集群内后端服务 Pod 上。

 而集群内服务之间的东西向流量,则由服务发现机制进行管理。例如 Pod 根据服务名称查询对方 Pod IP 进行通信。

我们可以从更广泛的视角来理解这两种流量:

     1、南北向流量指集群与外部网络交互的流量。入口控制器( Ingress Controller )负责将外部请求路由到集群,同时支持外部访问集群内服务。

     2、东西向流量指集群内各个微服务之间的调用流量。这里不需要顾虑网络安全隔离问题,负载由服务发现机制直接调度实现。

     在整个网络拓扑架构中,两者各司其职,形成了完整流量治理体系。入口控制器( Ingress Controller )统一入口服务发现则实现内部流量的松耦合通讯。这样既保证了外部访问安全,也实现了集群内各服务的高可用调用。这对于 Kubernetes 原生应用架构调优和流量管控都大有利处。

     从更为专业的角度进行补充:Ingress 本身只是一个 API 对象,定义了集群外部流量如何进入集群内各个服务的路由规则,但是它本身无法直接实现这些路由。

     这里需要一个控制平面组件-入口控制器( Ingress Controller ),它监听 Ingress 资源对象的变更,并根据 Ingress 规则进行配置。一般来说,入口控制器实现了反向代理功能,例如 Nginx Ingress 或 Traefik 等。

     入口控制器( Ingress Controller )通过监听节点的某个端口,接收集群外部流量。它将根据 Ingress 定义的规则,如域名、URL路径、主机名等进行匹配,然后利用负载均衡技术将流量转发至后端对应的 Pod 服务实例上。

     同时,入口控制器( Ingress Controller )也可以提供更丰富的流量管理能力,诸如基于IP或用户名密码的访问控制;超时重试与隔离;跨区域流量管理等。它通过对外提供统一入口,为内部服务提供安全可靠的对外访问表现层。

一定需要入口控制器 (Ingress Controller)吗 ? 

  通常,在容器云平台,尤其是私有云环境下,Kubernetes Cluster 内各个 Pod 仅能互相访问,但外部网络无法直接访问到集群内的 Pod,这样保证了集群的安全性。

     当需要对外提供服务时,我们可以创建 Ingress 资源对象来定义路由规则,比如基于域名或 URL 路径将流量转发到后端不同服务上。

     但是 Ingress 资源本身只是一个声明,无法直接实现流量转发这一功能。此时需要部署一个控制平面组件 入口控制器( Ingress Controller ) Pod(如 Nginx 或者 Traefik ),它会检测 Ingress 对象的变更,并根据 Ingress 规则配置负载均衡设备或自身作反向代理。

     入口控制器( Ingress Controller )以 Pod 形式运行在集群内,从集群外部流入的请求通过 入口控制器( Ingress Controller ) 入口被转发到后端服务上。

     同时,入口控制器( Ingress Controller ) 不仅可以实现单纯的循环请求分配,也支持根据目标 URL 或域名提供虚拟主机、HTTPS、认证等附加能力,充分利用其作为入口的功能。

     因此,只有通过入口控制器( Ingress Controller ),才能真正意义上实现 Ingress 定义的复杂流量管理规则,同时也通过统一入口对外提供安全可靠的服务访问能力,这就是 Ingress 实现外部访问的标准解决方案。

入口控制器 (Ingress Controller)工作原理 ?

    通常而言,入口控制器( Ingress Controller )的一般工作原理,注涉及如下,具体:

     1、定义 Ingress 规则:管理员通过 Kubernetes 的 Ingress 资源对象定义流量的路由规则。Ingress 规则通常包括主机名、路径、服务端口等信息,用于描述流量应该如何被路由。

     2、Ingress Controller 监听 Ingress 资源:入口控制器( Ingress Controller )会监听 Kubernetes Cluster 中的 Ingress 资源对象的变化。它通过与 Kubernetes API 服务器进行交互,获取 Ingress 规则的更新和创建。

     3、配置负载均衡器:入口控制器( Ingress Controller )根据 Ingress 规则中定义的信息配置负载均衡器,以便将流量分发到后端服务。这通常涉及到负载均衡器的配置和更新,以反映 Ingress 规则的变化。

     4、路由流量到后端服务:一旦负载均衡器配置完毕,入口控制器( Ingress Controller )会根据 Ingress 规则将流量路由到相应的后端服务。它可能使用反向代理、 DNS 解析等技术来实现流量的转发。

入口控制器 (Ingress Controller)能够解决哪些问题 

     通常而言,入口控制器(Ingress Controller)是一个在 Kubernetes Cluster 中运行的组件,用于管理和控制流入集群的网络流量。其主要解决了以下几个关键问题:

     1、负载均衡和流量路由:入口控制器(Ingress Controller)作为反向代理,通过负载均衡和流量路由机制将流量分发到后端服务。它可以根据请求的主机名、路径、标头等条件将流量导向不同的服务,实现灵活的流量管理。通过负载均衡和路由,入口控制器确保服务的可用性、可靠性和性能优化。

     2、SSL/TLS 终止和证书管理:入口控制器(Ingress Controller)可以处理入站请求的 SSL/TLS 终止,即将加密的流量解密并转发到后端服务。它支持在集群内部生成、管理和更新 SSL/TLS 证书,或与外部证书颁发机构(如 Let's Encrypt)集成,实现自动化的证书管理。通过 SSL/TLS 终止和证书管理,入口控制器提供了安全的通信渠道,保护用户数据的机密性和完整性。

     3、访问控制和安全策略:入口控制器(Ingress Controller)提供了访问控制机制,允许管理员定义和强制执行网络流量的安全策略。它可以基于 IP 地址、网络段、标头、请求方法等条件来限制对后端服务的访问。通过访问控制和安全策略,入口控制器可以防止未经授权的访问和恶意请求,提高系统的安全性。

     4、域名管理和多租户支持:入口控制器(Ingress Controller)允许管理员轻松管理多个域名,并将其映射到不同的服务和路径上。这对于支持多租户环境非常有用,可以为每个租户分配独立的域名和访问路径,实现隔离和定制化。通过域名管理和多租户支持,入口控制器使得在同一个集群中托管多个应用程序或服务更加灵活和可管理。

     5、观测及可见性:入口控制器(Ingress Controller)通常提供丰富的监控和日志记录功能,用于跟踪和分析流入集群的网络流量。它可以记录请求和响应的详细信息,包括响应时间、状态码、请求量等指标。通过监控和日志记录,入口控制器帮助管理员了解流量模式、识别潜在问题,并进行系统性能优化。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】字符函数和字符串函数(含模拟)

前言: 在做OJ题或阅读代码时或多或少会遇到一些字符函数和字符串函数, 如果不认识或不熟悉就会造成不便, 本篇文章主要是为了这方面而存在, 此篇介绍各个字符串的功能与使用方法, 下一篇会讲解如何模拟这些函数 重点&a…

Java Fluent编程

背景 Fluent Api最早是由Martin Fowler1提出的一种简洁的编程风格, 其每一步的执行都返回一个对象并可用于进一步的方法调用. 这样的编程风格可以很好的简化某些领域的开发, 并显著地提高代码的可读性和可维护性. 无论是在Java的流式api中, 还是众多DLS中都有它的身影. 原因主…

备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口

早在 2021 年 9 月,以太坊创始人 Vitalik Buterin 就曾提出了 EIP-4337(账户抽象)提案,并在去年 10 月对该提案进一步更新,引发行业的进一步关注。在今年 3 月,EIP-4337 提案正式通过审计,并成为…

SpringBean的生命周期

SpringBean的生命周期 SperingBean的生命周期是从Bean实例化之后,即通过反射创建出对象之后,到Bean成为一个完整对象,最终存储到单例池中,这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的…

初识Java 10-3 集合

目录 Collection和Iterator的对比 for-in和迭代器 总结图 本笔记参考自: 《On Java 中文版》 Collection和Iterator的对比 Collection是所有序列集合的共同根接口。因此,可以认为它是一个为表示其他接口之间的共性而出现的“附属接口”。 java.util.Ab…

Git大全

目录 一、Git概述 1.1Git简介 1.2Git工作流程图 1.3查看Git的版本 1.4 Git 使用前配置 1.5为常用指令配置别名(可选) 1.5.1打开用户目录,创建 .bashrc 文件 1.5.2在 .bashrc 文件中输入如下内容: 1.5.3打开gitBash,执行…

C++:类中的静态成员函数以及静态成员变量

一、静态成员变量 静态成员:在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。 静态成员变量需要在类外分配空间,static 成员变量是在初始…

【解决方案】edge浏览器批量添加到集锦功能消失的解决方案

edge的集锦功能很好用,右键标签页会出现如下选项: 但在某次edge更新后,右键标签页不再出现该选项: 这里可以参考为什么我的Edge浏览器右键标签页没有“将所有标签页添加到集锦”功能? - Microsoft Community 一文提出…

pcl--第十节 点云曲面重建

曲面重建技术在逆向工程、数据可视化、机器视觉、虚拟现实、医疗技术等领域中得到了广泛的应用 。 例如,在汽车、航空等工业领域中,复杂外形产品的设计仍需要根据手工模型,采用逆向工程的手段建立产品的数字化模型,根据测量数据建…

超级好用绘图工具(Draw.io+Github)

超级好用绘图工具(Draw.ioGithub) 方案简介 绘图工具:Draw.io 存储方式: Github 1 Draw.io 1.2 简介 ​ 是一款免费开源的在线流程图绘制软件,可以用于创建流程图、组织结构图、网络图、UML图等各种类型的图表。…

windows server 2019 、2012等服务器查看系统和应用程序日志

查看windows系统日志 点击左下角的windows按钮,输入事件两个字,会显示时间查看器 点击事件查看器,windows日志下面可以卡到系统日志和应用程序的日志 筛选时间范围内的日志 修改记录时间 选组自定义范围 选择事件事件 输入事件范围&#xff…

C语言大佬的必杀技---宏的高级用法

C语言大佬的必杀技—宏的高级用法 目录: 字符串化标记的拼接宏的嵌套替换多条语句防止一个文件被重复包含宏和函数的区别 可能大家在学习的时候用得比较少,但是在一些代码量比较大的时候,这样使用,可以大大的提高代码的可读性,…

从零开始:新手快速在国产操作系统中搭建高可用K8S(V1.28)集群落地实践

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~ 关注【公众号】回复【学习交流群】加入【SecDevOps】学习交流群! 文章目录: 本文为作者原创文章…

day03_基础语法

今日内容 零、复习昨日 一、Idea安装,配置 二、Idea使用 三、输出语句 四、变量 五、数据类型 附录: 单词 零、 复习昨日 1 装软件(typora,思维导图) 2 gpt(学会让他帮你解决问题) 3 java发展(常识) 4 HelloWorld程序 5 编码规范 6 安装jdk,配置环境变量 电脑常识 任…

STM32-无人机-电机-定时器基础知识与PWM输出原理

电机控制基础——定时器基础知识与PWM输出原理 - 掘金单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电机还是舵机,都会用到定时器,比如最常用的有刷直流电机,会使用定时器产生PW…

在GIS(地理信息系统)中,常见的地理文件记录

在GIS(地理信息系统)中,常见的地理文件包括以下几种: .cpg(Code Page文件):这个文件是指定地理数据文件编码的文件,它告诉软件如何正确地读取和解释地理数据文件中的字符编码。比如…

海外代理IP是什么?如何使用?

一、海外代理IP是什么? 首先,代理服务器是在用户和互联网之间提供网关的系统或路由器。它是一个服务器,被称为“中介”,因为它位于最终用户和他们在线访问的网页之间。 海外IP代理是就是指从海外地区获取的IP地址,用…

Linux学习-HIS系统部署(1)

Git安装 #安装中文支持(选做) [rootProgramer ~]# echo $LANG #查看当前系统语言及编码 en_US.UTF-8 [rootProgramer ~]# yum -y install langpacks-zh_CN.noarch #安装中文支持 [rootProgramer ~]# vim /etc/locale.co…

差值结构的顺序偏好

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A 中有5个点,B中有1个点,且不重合,统计迭代次数并排序。 第一种情况 差值结构 迭代次数 L E - - 2 10491.…

python随手小练1

题目: 使用python做一个简单的英雄联盟商城登录界面 具体操作: print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…