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.hqwc.cn/news/115927.html

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

相关文章

创建一个简单的外卖订餐系统

在今天的快节奏生活中,外卖订餐系统已经成为了人们日常生活中不可或缺的一部分。这些系统通过在线点餐和配送服务,为用户提供了便捷的用餐体验。在本文中,我们将创建一个简单的外卖订餐系统,使用Python和Flask框架构建后端&#x…

数据库中的DDL与DML

标签:数据库 记录下DDL和DML的相关概念。 数据定义语言 定义数据库模式 数据定义语言DDL(Data-Definition Language)可定义数据库模式。数据库模式在之前的文章中已经提到过了。简单来说,建表用的SQL语句就是DDL。如下代码 CREATE TABLE department(de…

【进阶C语言】字符串与内存库函数认识与模拟实现

本章内容大致目录: 1.strlen函数 2.strcpy函数 3.strcmp函数 4.strcat函数 5.strstr函数 6.strtok函数 7.strerror与perror函数 8.字符操作函数 9.内存操作函数 10.总结 以上函数均属于库函数,有的函数则会介绍如何模拟实现。 一、strlen函数…

蓝桥杯每日一题2023.9.22

4960. 子串简写 - AcWing题库 题目描述 题目分析 原本为纯暴力但是发现会超时,可以加入前缀和,从前往后先记录一下每个位置c1出现的次数 再从前往后扫一遍,如果遇到c2就将答案加上此位置前的所有c1的个数(直接加上此位置的前缀…

Ubuntu22.04 vnc远程黑屏

一、原因 原因是Ubuntu22.04使用的gnome启用了Wayland。vnc、teamviewer、向日葵、todesk等均无法使用或者远程黑屏等。 简单的说vnc、teamviewer、向日葵、todesk等均基于xorg实现(xorg太流行),并不兼容Wayland,所以vnc无法正常…

iOS 17 Simulator Failed with HTTP status 400:bad request

升级 xcode 15 要 ios17 的 sdk 才能运行,但是更新这个 sdk 400 错误了 解决方案: 直接去官网下载开发者后台下载dmg文件,使用命令行快速安装即可 https://developer.apple.com/documentation/xcode/installing-additional-simulator-runti…

医学影像信息(PACS)系统软件源码

PACS系统是PictureArchivingandCommunicationSystems的缩写,与临床信息系统(ClinicalInformationSystem,CIS)、放射学信息系统(RadiologyInformationSystem,RIS)、医院信息系统(HospitalInformationSystem,HIS)、实验室信息系统(L…

3288S Android11 适配红外遥控功能(超详细)

目录 一、rk3288平台红外遥控介绍二、原理图分析三、配置设备树并使能红外遥控功能四、打开红外打印功能,查看红外遥控的用户码和键值五、将查看到的红外遥控用户码和键值添加到设备树和.kl文件六、Android红外遥控.kl文件映射知识和使用添加新的.kl文件七、补充&am…

3、ARIMA序列预测Matlab代码、可视化(可做算法对比)

1、文件包中程序均收集、整理、汇总自网络。 2、文件包完整内容: 1)【ARIMA-功能函数】仅包含一个ARIMA算法函数,需要调用到自己的程序中使用。 函数部分代码及预览图: function [result] ARIMA_algorithm(data, Periodicity,…

python脚本批量创建数据

背景 批量创建测试数据,利用python自带的库如faker库,节省大量的人工。准备工作 1、安装python,参考地址 https://www.runoob.com/python3/python3-install.html 2、设置环境变量(不同操作系统) PATH“$PATH:/usr/local/bin/python” 3、查…

【深度学习】实验13 使用Dropout抑制过拟合

文章目录 使用Dropout抑制过拟合1. 环境准备2. 导入数据集3. 对所有数据的预测3.1 数据集3.2 构建神经网络 3.3 训练模型3.4 分析模型 4. 对未见过数据的预测4.1 划分数据集4.2 构建神经网络4.3 训练模型4.4 分析模型 5. 使用Dropout抑制过拟合5.1 构建神经网络5.2 训练模型5.3…

进入数据结构的世界

数据结构和算法的概述 一、什么是数据结构二、什么是算法三、如何去学习数据结构和算法四、算法的时间复杂度和空间复杂度4.1 算法效率4.2 大O的渐进表示法4.3 时间复杂度4.4 空间复杂度4.5 常见复杂度对比 一、什么是数据结构 数据结构是计算机存储、组织数据的方式。&#x…