Kubernetes概念:服务、负载均衡和联网:2. Gateway API

Gateway API

官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/gateway/
Gateway API 通过使用可扩展的、角色导向的、 协议感知的配置机制来提供网络服务。它是一个附加组件, 包含可提供动态基础设施配置和高级流量路由的 API 类别。

设计原则

  • 角色导向: Gateway API 类别是基于负责管理 Kubernetes 服务网络的组织角色建模的:
    • 基础设施提供者: 管理使用多个独立集群为多个租户提供服务的基础设施,例如,云提供商。
    • 集群操作员: 管理集群,通常关注策略、网络访问、应用程序权限等。
    • 应用程序开发人员: 管理在集群中运行的应用程序,通常关注应用程序级配置和 Service 组合。
  • 可移植: Gateway API 规范用自定义资源来定义, 并受到许多实现的支持。
  • 表达能力强: Gateway API 类别支持常见流量路由场景的功能,例如基于标头的匹配、流量加权以及其他只能在 Ingress 中使用自定义注解才能实现的功能。
  • 可扩展的: Gateway 允许在 API 的各个层链接自定义资源。这使得在 API 结构内的适当位置进行精细定制成为可能。

资源模型

Gateway API 具有三种稳定的 API 类别:

  • GatewayClass: 定义一组具有配置相同的网关,由实现该类的控制器管理。
  • Gateway: 定义流量处理基础设施(例如云负载均衡器)的一个实例。
  • HTTPRoute: 定义特定于 HTTP 的规则,用于将流量从网关监听器映射到后端网络端点的表示。 这些端点通常表示为 Service。
    Gateway API 被组织成不同的 API 类别,这些 API 类别具有相互依赖的关系,以支持组织中角色导向的特点。 一个 Gateway 对象只能与一个 GatewayClass 相关联;GatewayClass 描述负责管理此类 Gateway 的网关控制器。 各个(可以是多个)路由类别(例如 HTTPRoute)可以关联到此 Gateway 对象。 Gateway 可以对能够挂接到其 listeners 的路由进行过滤,从而与路由形成双向信任模型。

下图说明这三个稳定的 Gateway API 类别之间的关系:
在这里插入图片描述

GatewayClass

Gateway 可以由不同的控制器实现,通常具有不同的配置。 Gateway 必须引用某 GatewayClass,而后者中包含实现该类的控制器的名称。
下面是一个最精简的 GatewayClass 示例:

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:name: example-class
spec:controllerName: example.com/gateway-controller

在此示例中,一个实现了 Gateway API 的控制器被配置为管理某些 GatewayClass 对象, 这些对象的控制器名为 example.com/gateway-controller。 归属于此类的 Gateway 对象将由此实现的控制器来管理。

Gateway

Gateway 用来描述流量处理基础设施的一个实例。Gateway 定义了一个网络端点,该端点可用于处理流量, 即对 Service 等后端进行过滤、平衡、拆分等。 例如,Gateway 可以代表某个云负载均衡器,或配置为接受 HTTP 流量的集群内代理服务器。
下面是一个精简的 Gateway 资源示例:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: example-gateway
spec:gatewayClassName: example-classlisteners:- name: httpprotocol: HTTPport: 80

在此示例中,流量处理基础设施的实例被编程为监听 80 端口上的 HTTP 流量。 由于未指定 addresses 字段,因此对应实现的控制器负责将地址或主机名设置到 Gateway 之上。 该地址用作网络端点,用于处理路由中定义的后端网络端点的流量。

HTTPRoute

HTTPRoute 类别指定从 Gateway 监听器到后端网络端点的 HTTP 请求的路由行为。 对于服务后端,实现可以将后端网络端点表示为服务 IP 或服务的支持端点。 HTTPRoute 表示将被应用到下层 Gateway 实现的配置。 例如,定义新的 HTTPRoute 可能会导致在云负载均衡器或集群内代理服务器中配置额外的流量路由。
下面是一个最精简的 HTTPRoute 示例:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:name: example-httproute
spec:parentRefs:- name: example-gatewayhostnames:- "www.example.com"rules:- matches:- path:type: PathPrefixvalue: /loginbackendRefs:- name: example-svcport: 8080

在此示例中,来自 Gateway example-gateway 的 HTTP 流量, 如果 Host 的标头设置为 www.example.com 且请求路径指定为 /login, 将被路由到 Service example-svc8080 端口。

请求数据流

以下是使用 Gateway 和 HTTPRoute 将 HTTP 流量路由到服务的简单示例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1b8526bf50964403be02a5edb843ca7d.png
在此示例中,实现为反向代理的 Gateway 的请求数据流如下:

  1. 客户端开始准备 URL 为 http://www.example.com 的 HTTP 请求
  2. 客户端的 DNS 解析器查询目标名称并了解与 Gateway 关联的一个或多个 IP 地址的映射。
  3. 客户端向 Gateway IP 地址发送请求;反向代理接收 HTTP 请求并使用 Host: 标头来匹配基于 Gateway 和附加的 HTTPRoute 所获得的配置。
  4. 可选的,反向代理可以根据 HTTPRoute 的匹配规则进行请求头和(或)路径匹配。
  5. 可选地,反向代理可以修改请求;例如,根据 HTTPRoute 的过滤规则添加或删除标头。
  6. 最后,反向代理将请求转发到一个或多个后端。

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

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

相关文章

[音视频学习笔记]八、FFMpeg结构体分析 -上一个项目用到的数据结构简单解析:AVFrame、AVFormatContext、AVCodecContext

前言 上次我们做了一个简单的视频解码,MediaPlay-FFmpeg - Public 这一次简单对这个代码进行一个剖析,对其中的数据结构进行一个解析。 这些数据结构之间的关系 AVFrame 、AVFormatContext 、AVCodecContext 、AVIOContext 、AVCodec 、AVStream 、AV…

从政府工作报告中的IT热词统计探计算机行业发展(三)智能网联新能源汽车:2次

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

3.24作业

基于UDP的网络聊天室 项目需求: 如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…

matlab-双树复小波变换DTCWT(转自 MathWorks)

此示例展示了双树复小波变换 (DTCWT) 如何在信号、图像和体积处理方面提供优于临界采样 DWT 的优势。DTCWT 作为两个独立的双通道滤波器组来实现。为了获得本示例中描述的优点,您不能任意选择两个树中使用的缩放和小波滤波器。一棵树的低通(缩放&#xf…

Github多账号共存

在开发阶段,如果同时拥有多个开源代码托管平台的账户,在代码的管理上非常麻烦。那么,如果同一台机器上需要配置多个账户,怎样才能确保不冲突,不同账户独立下载独立提交呢? 我们以两个github账号进行演示 …

docker desktop启动Kibana:No living connections, Error: No Living connections

Kibana启动之后一直报Kibana server is not ready yet 查看日志:No living connections, Error: No Living connections,连接ES失败! 查看配置文件内容 /usr/share/kibana/config/kibana.yml 经过一系列查找资料和尝试之后,亲测以下方法可用…

阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。

引言 ThreadLocal在Java多线程编程中扮演着重要的角色,它提供了一种线程局部存储机制,允许每个线程拥有独立的变量副本,从而有效地避免了线程间的数据共享冲突。ThreadLocal的主要用途在于,当需要为每个线程维护一个独立的上下文…

字节算法岗二面,凉凉。。。

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

分治归并问题

“别让自我被拯救~” 谈谈归并与分治 当我们首次接触排序算法时,一定对所谓 "归并"方式排序的算法感到头疼~ 因为,我们难以形象出其不断 "分离"时,各个区域的状态。然而,即便 "归并"排序算法的学习…

新能源汽车充电桩消防安全视频智能可视化监管建设方案

一、方案背景 据应急管理部门统计公布的数据显示,仅2023年第一季度,新能源汽车自燃率就上涨了32%,平均每天就有8辆新能源汽车发生火灾(含自燃)。在已查明起火原因中,58%源于电池问题,19%源于碰…

输出当前时间

用途:在项目中一些属性中设置当前时间 实例代码 import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class time {public static void main(String[] args){LocalDateTime china LocalDateTime.now(); DateTimeFormatter forma…

ASPICE学习笔记 ———— 过程模型(Process reference model)

文章目录 介绍过程模型Primary life cycle processes categoryAcquisition Process GroupSupply Process GroupSystem Engineering Processes GroupSoftware Engineering Processes Group Supporting life cycle processes categoryOrganizational life cycle processes catego…

【活动预告】本周四(3月28日)AI算法大模型备案线上活动

Al算法备案中心特邀十年合规专家「乐歌」,于本周四进行线上算法备案活动 支持AI创业者,免费咨询算法备案 3.28日20:00腾讯会议欢迎参与! 扫码添加活动助理报名参加!

四川宏博蓬达法律咨询有限公司:您身边的法律守护者

在快节奏的现代生活中,法律咨询服务已成为人们不可或缺的一部分。四川宏博蓬达法律咨询有限公司正是这样一个值得您信赖的法律服务伙伴。我们专注于为客户提供专业、高效、安全的法律服务,致力于成为您生活中的法律守护者。 一、专业团队,服务…

反沙箱思路总结

文章目录 反调试反沙箱时间对抗环境检测 反虚拟机黑DLL父进程检测傀儡进程后记 反调试 IsDebuggerPresent #include<windows.h> #include<stdio.h> BOOL check() {return IsDebuggerPresent(); } BOOL isPrime(long long number){if (number < 1)return FALSE…

制作一个RISC-V的操作系统七-UART初始化(UART NS16550A 规定 目标 发送数据 代码 extern)

文章目录 UARTNS16550A规定目标发送数据代码extern UART 对应到嵌入式开发中&#xff0c;qemu模拟的就是那块开发板&#xff08;硬件&#xff09; 电脑使用qemu时可以理解为qemu模拟了那块板子&#xff0c;同时那块板子与已经与你的电脑相连接了&#xff08;我们对应的指定的内…

水牛社五大赚钱栏目概览:轻松了解项目核心与赚钱原理

很多新用户首次访问水牛社官网时&#xff0c;可能会感到有些迷茫。由于软件介绍相对较长&#xff0c;部分朋友可能缺乏耐心细读。然而&#xff0c;若您真心希望在网络上找到赚钱的机会&#xff0c;深入了解我们的发展历程将大有裨益。简而言之&#xff0c;本文旨在快速带您领略…

基于tcp协议的网络通信(将服务端守护进程化)

目录 守护进程化 引入 介绍 如何实现 思路 接口 -- setsid 注意点 实现代码 daemon.hpp log.hpp 运行情况 前情提要 -- 前后台任务介绍(区别命令),sessionsid介绍,session退出后的情况(nuhup,终端进程控制组),任务进程组概念,任务与进程组的关系,-bash介绍-CSDN博客…

ros找不到生成的可执行文件[rosrun] Couldn‘t find executable named hello_world_cpp below

catkin_make之后source ./devel/setup.bash source之后运行节点的时候,ros找不到可执行文件&#xff08;其实tab键补不齐就没找到了&#xff09; 手动查找发现生成的可执行文件在build下不在devel/lib下&#xff0c;所以白source&#xff0c;压根找不到。 查找原因说是因为CMa…

java项目将静态资源中的文件转为浏览器可访问的http地址

新增一个类叫啥无所谓&#xff0c;主要是实现 WebMvcConfigurer 加上注解 Configuration项目启动时加入bean中 只操作addResourceHandlers这一个方法 其他都没用 文章下方附带一个简易的上传图片代码 package cn.exam.config;import org.springframework.context.annotati…