Ingress Controller

2023-09-20 14:15:23

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

更多推荐

【Spatial-Temporal Action Localization(六)】论文阅读2021年

文章目录1.MultiSports:AMulti-PersonVideoDatasetofSpatio-TemporallyLocalizedSportsActions摘要和结论引言:针对痛点和贡献数据特点2.Actor-Context-ActorRelationNetworkforSpatio-TemporalAct

性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(JavaVM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(JavaSE平台)6,JConsole的已经更新到目前的外观,类似于Windows和GNOME桌面(其他

(2) Java 8 实战第二版——补充 收集数据、并行数据处理能力与性能

第6章用Collectors类创建和使用收集器将数据流归约为一个值汇总:归约的特殊情况数据分组和分区开发你的自定义收集器对一个交易列表按货币分组,获得该货币的所有交易额总和(返回一个Map<Currency,Integer>)。将交易列表分成两组:贵的和不贵的(返回一个Map<Boolean,List>)。创建多级分组

1397: 图的遍历——广度优先搜索

题目描述广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未

什么是Verilog?

什么是Verilog?Verilog是一种以代码形式来描述数字系统和电路的硬件描述语言(HDL)。它由GatewayDesignAutomation在20世纪80年代中期开发,后来被CadenceDesignSystems收购。Verilog广泛用于数字和混合信号系统的设计和验证,包括专用集成电路(ASIC)和现场可编

MeterSphere压测,出现HttpHostConnectException

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException解决方案:net.ipv4.tcp_tw_reuse默认是0或者2,更改为1net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接;那么,当连接被复用

成都瀚网科技有限公司:抖店平台买家怎么修改评价?

在抖音电商平台上,买家的评价对店铺的声誉和销售业绩有着重要影响。然而,有时买家可能会因为某些原因想要修改之前的评价。那么,抖店平台上的买家如何修改评价呢?修改评价对店铺有什么影响?本文将介绍买家如何修改评价。并探讨可能的影响。1.如何修改抖店评论在抖店平台上,买家可以通过以下步骤修改之前的评论:A。打开抖音APP并登录

python项目2to3方案预研

目录官方工具2to3工具安装参数解释基本使用工具缺陷future工具安装参数解释基本使用工具缺陷python-modernize工具安装参数解释基本使用工具缺陷pyupgrade工具安装参数解释基本使用工具缺陷对比官方工具2to32to3是Python官方提供的用于将Python2代码转换为Python3代码的工具。它

Docker compose

文章目录Dockercompose1.介绍2.为什么要DockerCompose3.DockerCompose文件(docker-compose.yml)imagecommandentrypointenvironmentnetworksvolumesportsexposedepends_onenv_file4.Dock

Java21的新特性

Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java2

STM32WB55开发(3)----断开蓝牙连接

STM32WB55开发----3.断开蓝牙连接概述硬件准备视频教学样品申请源码下载选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙LED配置设置工程信息工程文件设置参考文档SVCCTL_App_NotificationACI_HAL_GET

热文推荐