学习笔记三十四:Ingress和 Ingress Controller概述
Ingress和 Ingress Controller概述
- 回顾service四层负载
- 在k8s中为什么要做负载均衡
- Service不足之处
- 四层负载和七层负载的区别
- OSI七层模型:
- Ingress介绍
- Ingress Controller介绍
- Ingress-controller 作用
- Ingress和Ingress Controller总结
- 使用Ingress Controller代理k8s内部pod的流程
- 客户端通过七层调度器访问后端pod的方式
回顾service四层负载
在k8s中为什么要做负载均衡
- Pod 漂移问题,可以理解成Pod IP是变化的
- Kubernetes具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等。通俗地说,这个Pod可能在任何时刻出现在任何节点上,也可能在任何时刻死在任何节点上;那么自然随着Pod的创建和销毁,Pod IP 肯定会动态变化;
- 这里借助于Kubernetes的 Service 机制,Service可以以标签的形式选定一组带有指定标签的Pod,并监控和自动负载他们的Pod IP,那么我们向外暴露只暴露Service IP就行了;这就是NodePort模式:即在每个节点上开起一个端口,然后转发到内部Pod IP 上。
- Service可以通过标签选择器找到它所关联的Pod。但是属于四层代理,只能基于IP和端口代理。
Service不足之处
Service的type类型有很多,如NodePort、clusterIp、loadbalancer、externalname,如果Service想要被k8s集群外部访问,需要用NodePort类型,但是NodePort类型的svc有如下几个问题:
- nodeport会在物理机映射一个端口,绑定到物理机上,这样就导致,每个服务都要映射一个端口,端口过多,维护困难
- Service底层使用的是iptables或者ipvs,仅支持四层代理,无法基于https协议做代理
四层负载和七层负载的区别
- 四层负载:四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
- 七层的负载均衡就是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
- 四层负载均衡工作在传输层,七层负载均衡工作在应用层
OSI七层模型:
Ingress介绍
- Ingress官网定义:Ingress可以把进入到集群内部的请求转发到集群中的一些服务上,从而可以把服务映射到集群外部。Ingress 能把集群内Service 配置成外网能够访问的 URL,流量负载均衡,提供基于域名访问的虚拟主机等。
- Ingress简单的理解就是你原来需要改Nginx配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yaml 创建,每次不要去改Nginx 了,直接改yaml然后创建/更新就行了;那么问题来了:”Nginx 该怎么处理?”
- Ingress总结:ingress是k8s中的资源,主要是管理ingress-controller这个代理的配置文件
- Ingress Controller 这东西就是解决 “Nginx 的处理方式” 的;Ingress Controller 通过与 Kubernetes API 交互,动态的去感知集群中Ingress规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下
Ingress Controller介绍
Ingress Controller是一个七层负载均衡调度器,客户端的请求先到达这个七层负载均衡调度器,由七层负载均衡器在反向代理到后端pod,常见的七层负载均衡器有nginx、traefik,以我们熟悉的nginx为例,假如请求到达nginx,会通过upstream反向代理到后端pod应用,但是后端pod的ip地址是一直在变化的,因此在后端pod前需要加一个service,这个service只是起到分组的作用,那么我们upstream只需要填写service地址即可。
Ingress-controller 作用
Ingress-controller里面封装就是nginx
我直接在物理机上装个nginx就行了啊,为啥还弄个Ingress-controller?
- Nginx:nginx配置文件一改动,你还需要手动reload一下才可以生效
- 用ingress-controller封装的nginx,你ingress维护配置,ingress创建好之后,会自动的把配置文件传到ingress-controller这个pod里,会自动进行reload,然后配置就生效了
Ingress和Ingress Controller总结
- Ingress 则是定义规则,通过它定义某个域名的请求过来之后转发到集群中指定的 Service。它可以通过 Yaml 文件定义,可以给一个或多个 Service 定义一个或多个 Ingress 规则。
- Ingress Controller结合Ingress 定义的规则生成配置,然后动态更新ingress-controller里的Nginx 或者trafik负载均衡器,并刷新使配置生效,来达到服务自动发现的作用。
使用Ingress Controller代理k8s内部pod的流程
- 部署Ingress controller,我们ingress controller使用的是nginx
- 创建Pod应用,可以通过控制器创建pod
- 创建Service,用来分组pod
- 创建Ingress http,测试通过http访问应用
- 创建Ingress https,测试通过https访问应用
客户端通过七层调度器访问后端pod的方式
相关文章:

学习笔记三十四:Ingress和 Ingress Controller概述
Ingress和 Ingress Controller概述 回顾service四层负载在k8s中为什么要做负载均衡Service不足之处四层负载和七层负载的区别OSI七层模型: Ingress介绍Ingress Controller介绍Ingress-controller 作用Ingress和Ingress Controller总结使用Ingress Controller代理k8s…...

Webpack的Tree Shaking。它的作用是什么?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

研发效能DevOps: Git安装
目录 一、理论 1.Git 2.Git 工具 二、实验 1.Git安装 2.配置Git 3. VS Code加载Git 一、理论 1.Git (1)简介 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理。 Git 是一个…...

ZZ038 物联网应用与服务赛题第D套
2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (D卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用的各类软件工具、软件安装文件等,都…...

基于STM32设计的室内环境监测系统(华为云IOT)_2023
一、设计需求 基于STM32+华为云物联网平台设计一个室内环境监测系统,以STM32系列单片机为主控器件,采集室内温湿度、空气质量、光照强度等环境参数,将采集的数据结果在本地通过LCD屏幕显示,同时上传到华为云平台并将上传的数据在Android移动端能够实时显示、查看。 【1…...

UE5C++学习(一)--- 增强输入系统
一、关于增强输入系统的介绍 增强输入系统官方文档介绍 二、增强输入系统的具体使用 注:在使用方面,不会介绍如何创建项目等基础操作,如果还没有UE的使用基础,可以参考一下我之前UE4的文章,操作差别不会很大。 如上…...

好物周刊#29:项目管理软件
https://github.com/cunyu1943/JavaPark https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. HelloGithub 分享 GitHub 上有趣、入门级的开源项目。每月 28 号以月刊…...

玻色量子“天工量子大脑”亮相中关村论坛,大放异彩
2023年5月25日至30日,2023中关村论坛(科博会)在北京盛大召开。中关村论坛(科博会)是面向全球科技创新交流合作的国家级平台行业盛会,由科技部、国家发展改革委、工业和信息化部、国务院国资委、中国科学院、…...

使用Gorm进行高级查询
深入探讨GORM的高级查询功能,轻松实现Go中的数据检索 高效的数据检索是每个应用程序性能的核心。GORM,强大的Go对象关系映射库,不仅扩展到基本的CRUD操作,还提供了高级的查询功能。本文是您掌握使用GORM进行高级查询的综合指南。…...

基于梯度算法的无人机航迹规划-附代码
基于梯度算法的无人机航迹规划 文章目录 基于梯度算法的无人机航迹规划1.梯度搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用梯度算法来优化无人机航迹规划。 1.梯度搜索算法 …...

【工具】【IDE】Qt Creator社区版
Qt Creator社区版下载地址:https://download.qt.io/archive/qt/ 参考:https://cloud.tencent.com/developer/article/2084698?areaSource102001.8&traceIduMchNghqp8gWPdFHvSOGg MAC安装并配置Qt(超级简单版) 1.安装brew&…...

王道p18 6.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同(c语言代码实现)
视频讲解在这里:👇 顺序表p18 第6题wd数据结构课后代码题(c语言代码实现)_哔哩哔哩_bilibili 本题代码如下 void deleterepeat(struct sqlist* L) {if (L->length 0)printf("表空");int i 0;int k 0;for (i 1…...

Python入门:6个好用的Python代码,快来收藏!
文章目录 1.类有两个方法,一个是 new,一个是 init,有什么区别,哪个会先执行呢?2.map 函数返回的对象3.正则表达式中 compile 是否多此一举?4.[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]5.一行代码将字符…...
Linux常用指令(二)——文件管理
Linux文件管理 2.1 创建文件 touch2.2 复制文件 cp2.3 删除文件 rm2.4 移动文件 mv2.5 重命名文件 rename2.6 查看文件 cat2.7 查看文件的类型 file2.8 编辑文件 vim2.9 打印文件内容 cat2.10 变更文件所有者 chown2.11 修改文件权限 chmod 更加完整的Linux常用指令 2.1 创建文…...

AI开源 - LangChain UI 之 Flowise
原文:AI开源 - LangChain UI 之 Flowise 一、Flowise 简介 Flowise 是一个为 LangChain 设计的用户界面(UI),使得使用 LangChain 变得更加容易(低代码模式)。 通过拖拽可视化的组件,组建工作流,就可以轻…...
java的集合类中哪些可以添加不同类型数据,哪些不可以?
在Java的集合类中,有些可以添加不同类型的数据,而有些则要求元素类型必须一致。以下是一些常见的Java集合类及其对元素类型的要求: 1、ArrayList ArrayList可以添加不同类型的数据,因为它使用了泛型,可以存储任何类型…...

基于51单片机的烟雾和温湿度检测控制系统仿真(智能防火系统,火灾报警灭火系统)
wx供重浩:创享日记 对话框发送:单片机防火 获取完整源码源文件仿真源文件论文报告说明文档等 基于51单片机的光照及温湿度检测报警控制系统 由STC89C52单片机LCD1602液晶显示屏ADC0832模块蜂鸣器DHT11温湿度传感器 烟雾传感器LED按键构成 具体功能&…...

【多线程】静态代理
当使用静态代理模式时,我们会有一个真实的对象(RealSubject),一个代理对象(ProxySubject),代理对象将请求转发给真实对象,并可以在请求前后执行额外的操作。 真实对象和代理对象要实…...
线性代数 第二章 矩阵
一、概念 个数排成的m行n列的表格 二、运算法则 三、初等变换 (1)用非零常数k乘矩阵的某一行(列); (2)互换矩阵某两行(列)的位置; (3&#…...
vue实现自定义字体
1、字体资源查找 网址 https://eng.m.fontke.com/ 选择想要的字体之后下载 获取文件夹内的.ttf文件 2 、字体引入 在项目根目录下新建font文件夹,将ttf文件放在里面 3、相应的页面vue文件中引入 在style标签中加上 font-face { font-family: ‘ZCOOLXiaoWei’…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...