k8s -ingress

概念

Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由,ingress能代理集群为内部的网络,将集群外部的HTTP/HTTPS网络请求转发至不同的service,其本质就是创建一个NodePort类型的svc,和一个nginx
在这里插入图片描述

组成

k8s中的ingress 其实是指的两个部分,第一个为ingress-controller (nginx) , 另一个为Ingress resource (nginx配置)那么到现在,有了 Ingress 和 Ingress Controller,我们是不是就可以完美地管理集群的进出流量了呢?

ingress控制器类似于nginx,Ingress类似于nginx的配置文件。如果只安装nginx,而没有nginx的配置文件,则此nginx将毫无意义;反过来,若只有nginx的配置文件,但没安装nginx,则配置文件无运行载体

IngressClass

最初 Kubernetes 也是这么想的,一个集群里有一个 Ingress Controller,再给它配上许多不同的 Ingress 规则,应该就可以解决请求的路由和分发问题了。
但随着 Ingress 在实践中的大量应用,很多用户发现这种用法会带来一些问题,比如:
由于某些原因,项目组需要引入不同的 Ingress Controller,但 Kubernetes 不允许这样做;
Ingress 规则太多,都交给一个 Ingress Controller 处理会让它不堪重负;
多个 Ingress 对象没有很好的逻辑分组方式,管理和维护成本很高;
集群里有不同的租户,他们对 Ingress 的需求差异很大甚至有冲突,无法部署在同一个 Ingress Controller 上。
所以,Kubernetes 就又提出了一个 Ingress Class 的概念,让它插在 Ingress 和 Ingress Controller 中间,作为流量规则和控制器的协调人,解除了 Ingress 和 Ingress Controller 的强绑定关系。
现在,Kubernetes 用户可以转向管理 Ingress Class,用它来定义不同的业务逻辑分组,简化 Ingress 规则的复杂度。比如说,我们可以用 Class A 处理博客流量、Class B 处理短视频流量、Class C 处理购物流量
在这里插入图片描述

ingress的类型

ingress重写转发路径

文档地址:https://kubernetes.github.io/ingress-nginx/examples/rewrite/

ingress 转发的时候是默认是将匹配的到路径直接转发到对应的svc
也就是说path中设置的前缀是会直接带到svc中去的,比如path为/java
访问www.abc/java 到svc中就是 svcIP:port/java,如果想重写url 比如
www.abc/java 到svc中变成 svcIP:port/就需要使用到注解 nginx.ingress.kubernetes.io/rewrite-target

在这里插入图片描述

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  ingressClassName: nginx
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: http-svc
            port: 
              number: 80

效果:

rewrite.bar.com/something rewrites to rewrite.bar.com/
rewrite.bar.com/something/ rewrites to rewrite.bar.com/
rewrite.bar.com/something/new rewrites to rewrite.bar.com/new

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【万题详解】洛谷P1282 多米诺骨牌

题目 链接——题目在这里!!! 多米诺骨牌由上下 22 个方块组成,每个方块中有 1∼6 个点。现有排成行的上方块中点数之和记为 S1​,下方块中点数之和记为 S2​,它们的差为 ∣∣S1​−S2​。如图S161119&…

提升MySQL访问性能

1. 读写分离 设置多个从数据库,从数据库可能在多个机器中。写操作在主数据库进行主数据库提供数据的主要依据 缓解了MySQL的读压力。 主从复制原理图如下 如果对于读操作有一致性要求,那么读操作去主数据库即可。 2. 连接池 因为一个请求必须要…

SpringCloud-Nacos服务分级存储模型

Nacos 服务分级存储模型是 Nacos 存储服务注册信息和配置信息的核心模型之一。它通过将服务和配置信息按照不同级别进行存储,实现了信息的灵活管理和快速检索,为微服务架构下的服务发现和配置管理提供了高效、可靠的支持。本文将对 Nacos 服务分级存储模…

黄金交易策略(Nerve Nnife.mql4):三档移动止盈机制设计

和中国电费一样,一档档的上。 完整EA:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 mql4代码节选如下: //第一张单上涨2500,开始SL跟踪300点if (count 1 && !follow_p_3){double ctp calcTotalProfit(0, "b…

vue-生命周期+工程化开发(三)

生命周期 Vue 生命周期 和 生命周期的四个阶段 思考: 什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期:一个Vue实例从 创建…

在VSCode中创建Java项目

在VSCode中创建Java项目 首先,保证安装了Java的JDK. WinR -> 输入cmd -> 输入 java -version -> 然后可以看到安装的JDK版本,如果没安装可以去找教程。 JDK安装参考教程 打开VSCode,打开扩展(Ctrl Shift S&#xff…

车载自动化项目:Python

1. 自动化测试用的什么框架? 第一种:PythonSeleniumuittest框架 首先是拿到需求文档,基于这个需求去进行搭建。 用pytestrequestallure 这些第三方库进行编写自动化脚本。 举个例子一般的话整个的一个自动化的搭建是分为6层嘛&#xff1a…

火车可视化调车系统

列车在调车作业时,当机车头在尾部推动车厢时,司机室一人操控机车,车厢前端配备两名挂梯随车运行调车员,调车员人为分析行车方向是否有障碍、轨道行人等紧急情况,通过对讲机通知司机控制停车。由于司机无法直观观察列车…

java 执行方式和类加载过程

java默认属于混合执行: 编译和解释并存 java先进行解释执行,遇到多次重复的代码会把它编程成可执行文件,方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

centos7指定目录上传到google云盘

from datetime import datetime, timedelta from concurrent.futures import ThreadPoolExecutor import os,time,subprocess,tracebackdef run_cmd(command):"""运行命令并返回输出。"""shell Trueprint(command,command)result subprocess.r…

【软件测试大作业】京东系统的Selenium自动化测试报告

1访问地址 https://wwwjd.com 2 点击左侧导航 手机/运营商/数码 2点击左侧导航"影音娱乐"的子类"蓝牙/无线耳机 4商品筛选点击查询的第一个商品(选择默认类型款式颜色)一>6.设置商品数量,点击"加入去购物车结算" Selenium测试的数据驱动设置 请结…

C#,泰波拿契数(Tribonacci Number)的算法与源代码

1 泰波拿契数(Tribonacci Number) 泰波拿契数(Tribonacci Number)是斐波那契的拓展。 泰波拿契数 (Tribonacci Number) 即把费波拿契数 (Fibonacci Number) 的概念推广至三个数。 2 计算结果 3 源程序 using System; namespace…

Linux Shell编程系列--变量的定义与使用

一、目的 上一篇我们简单介绍了shell脚本的组成以及如何运行一个shell脚本,本篇将详解讲解shell中的变量。在Shell脚本中,变量是用来存储和处理数据的基本结构。 二、介绍 1、定义变量 变量名与等号()后跟值来定义一个变量&#…

antdpro框架npm install 报错,切换tyarn安装成功。

报错日志 有时间补 当前版本 解决办法 进入工作目录 安装官方推荐的tyarn工具:npm install yarn tyarn -g 进行依赖安装:tyarn 启动项目 :tyarn start 注意: 技术迭代较快,建议查询官网后实践,以上作为…

大模型实战营第二期——3. 基于 InternLM 和 LangChain 搭建你的知识库

github地址:InternLM/tutorial-书生浦语大模型实战营文档地址:基于 InternLM 和 LangChain 搭建你的知识库视频地址:基于 InternLM 和 LangChain 搭建你的知识库Intern Studio: https://studio.intern-ai.org.cn/console/instance动手学大模型…

前端面试题——JS实现反转链式表

前言 反转单向链表就是将整个单链表的数据进行倒序的过程。 例如,如果反转之前的单链表是0->1->2->3,那么反转之后的单链表应该是3->2->1->0。这个操作通常是通过改变链表中每个节点的指针方向来实现的,即让每个节点的指…

《Git 简易速速上手小册》第10章:未来趋势与扩展阅读(2024 最新版)

文章目录 10.1 Git 与开源社区10.1.1 基础知识讲解10.1.2 重点案例:Python 社区使用 Git10.1.3 拓展案例 1:Git 在大型开源项目中的角色10.1.4 拓展案例 2:支持开源项目的 Git 托管平台 10.2 新兴技术与 Git 的整合10.2.1 基础知识讲解10.2.2…

猫头虎分享已解决Bug || Go Error: Missing Return at End of Function

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【算法与数据结构】42、LeetCode接雨水

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:   程序如下: 复杂度分析: 时间复杂度: O ( ) O() O()。空间复…

猫头虎分享已解决Bug || Go Error: redeclared as imported package name ‍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …