当前位置: 首页 > news >正文

Kubernetes Gateway API-4-TCPRoute和GRPCRoute

1 TCPRoute

目前 TCP routing 还处于实验阶段。

Gateway API 被设计为与多个协议一起工作,TCPRoute 就是这样一个允许管理TCP流量的路由。

在这个例子中,我们有一个 Gateway 资源和两个 TCPRoute 资源,它们按照以下规则分配流量:

  • 网关端口 8080 上的所有TCP流都被转发到 Kubernetes service my-foo-service 的端口 6000。
  • 网关端口 8090 上的所有TCP流都被转发到 Kubernetes service my-bar-service 的端口 6000。

在这个例子中,两个 TCP 侦听器将应用于网关,以便将它们路由到两个单独的后端 TCPRoutes,请注意,Gateway 上为 listeners 设置的协议是TCP

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: my-tcp-gateway
spec:gatewayClassName: my-tcp-gateway-classlisteners:- name: fooprotocol: TCPport: 8080allowedRoutes:kinds:- kind: TCPRoute- name: barprotocol: TCPport: 8090allowedRoutes:kinds:- kind: TCPRoute
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TCPRoute
metadata:name: tcp-app-1
spec:parentRefs:- name: my-tcp-gatewaysectionName: foorules:- backendRefs:- name: my-foo-serviceport: 6000
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TCPRoute
metadata:name: tcp-app-2
spec:parentRefs:- name: my-tcp-gatewaysectionName: barrules:- backendRefs:- name: my-bar-serviceport: 6000

在上面的示例中,我们使用 parentRefs 中的 sectionName 字段将两个单独后端服务的 TCP流量分开:

spec:parentRefs:- name: my-tcp-gatewaysectionName: foo

这与 Gatewaylistenersname 字段的值直接对应:

  listeners:- name: fooprotocol: TCPport: 8080- name: barprotocol: TCPport: 8090

通过这种方式,每个 TCPRoute 都把自己“固定”到 Gateway 上的不同端口,这样 my-foo-service 就可以从集群外部获取端口 8080 的流量,而 my-bar-service 则可以获取端口 8090 的流量。

2 GRPCRoute

GRPCRoute 资源目前仅处于实验阶段。

GRPCRoute 资源允许您匹配 gRPC 流量并将其定向到 Kubernetes 后端。本指南展示了 GRPCRoute 如何匹配主机、标头和服务以及方法字段上的流量,并将其转发到不同的 Kubernetes 服务。

2.1 通用示例

为了从网关接收流量,必须使用 ParentRefs 配置 GRPCRoute 资源,ParentRefs 引用它应该连接到的父网关。以下示例显示了如何配置 GatewayGRPCRoute 的组合来为gRPC流量提供服务:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: example-gateway
spec:gatewayClassName: example-gateway-classlisteners:- name: grpcprotocol: HTTPSport: 50051tls:certificateRefs:- kind: Secretgroup: ""name: example-com-cert
---
apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:name: example-route
spec:parentRefs:- name: example-gatewayhostnames:- "example.com"rules:- backendRefs:- name: example-svcport: 50051

2.2 具体实例

下图描述了三种不同服务之间所需的流量:

  • foo.example.comcom.example.User.Login 方法的流量被转发到 foo-svc
  • 带有 env: canary 头的流量被转发到 bar-svc-canary,适用于所有服务和方法
  • 没有该头的流量被转发到 bar-svc,适用于所有服务和方法
    在这里插入图片描述

一个 GRPCRoute 可以匹配一组单独的主机名。这些主机名在 GRPCRoute 中进行其他匹配之前就已经被匹配。由于 foo.example.combar.example.com 是具有不同路由需求的独立主机,因此每个主机都作为其自己的 GRPCRoute 部署——foo-routebar-route

以下的 foo-route 将匹配任何针对 foo.example.com 的流量,并应用其路由规则将流量转发到正确的后端。由于只指定了一个匹配,因此只有对 foo.example.comcom.example.User.Login 方法的请求会被转发。任何其他方法的 RPC 将不会被此路由匹配。

apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:name: foo-route
spec:parentRefs:- name: example-gatewayhostnames:- "foo.example.com"rules:- matches:- method:service: com.examplemethod: LoginbackendRefs:- name: foo-svcport: 50051

同样,如下所示,bar-route GRPCRoute 匹配 bar.example.com 的 RPC。所有针对该主机名的流量将根据路由规则进行评估。最具体的匹配将优先考虑,这意味着任何带有 env: canary 头部的流量将被转发到 bar-svc-canary;如果该头部缺失或没有值 canary,则流量将被转发到 bar-svc

apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:name: bar-route
spec:parentRefs:- name: example-gatewayhostnames:- "bar.example.com"rules:- matches:- headers:- type: Exactname: envvalue: canarybackendRefs:- name: bar-svc-canaryport: 50051- backendRefs:- name: bar-svcport: 50051

gRPC 反射是使用交互式客户端(如 grpcurl)所必需的,前提是你的本地文件系统中没有目标服务的协议缓冲区的本地副本。要启用此功能,首先确保在你的应用程序 Pod 上有一个 gRPC 反射服务器在监听,然后将反射方法添加到你的 GRPCRoute,配置实例如下。这在开发和预生产环境中可能会很有用,但在生产环境中启用此功能时,应在考虑安全隐患后再进行。

apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:name: foo-route
spec:parentRefs:- name: example-gatewayhostnames:- "foo.example.com"rules:- matches:- method:service: com.example.Usermethod: LoginbackendRefs:- name: foo-svcport: 50051- matches:- method:service: grpc.reflection.v1.ServerReflectionbackendRefs:- name: foo-svcport: 50051

相关文章:

Kubernetes Gateway API-4-TCPRoute和GRPCRoute

1 TCPRoute 目前 TCP routing 还处于实验阶段。 Gateway API 被设计为与多个协议一起工作,TCPRoute 就是这样一个允许管理TCP流量的路由。 在这个例子中,我们有一个 Gateway 资源和两个 TCPRoute 资源,它们按照以下规则分配流量&#xff1…...

【C++动态规划 前缀和】3250. 单调数组对的数目 I|1897

本文涉及知识点 C动态规划 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode3250. 单调数组对的数目 I 给你一个长度为 n 的 正 整数数组 nums 。 如果两个 非负 整数数组 (arr1, arr2) 满足以下条件,我们称它们是 单调…...

【机器学习:五、使梯度下降法更快收敛的技巧】

1. 特征缩放 1.1 特征缩放的作用 特征缩放是一种将不同特征值归一化到相似范围的技术,可以显著提高梯度下降法的收敛速度。 作用: 避免数值差异导致的优化困难:当特征值范围差异较大时,代价函数呈现“长而窄”的形状&#xff0…...

系统思考—结构影响行为

托尔斯泰在《安娜卡列尼娜》中说:“幸福的家庭都是相似的,不幸的家庭各有各的不幸。”在企业经营管理中也如此——企业剧本总是相似,只是男女主角不同。 但无论外在表现如何变化,真正决定企业命运的,是系统结构。 企业…...

WorldQuant Settings 配置项名词解释

中文翻译及通俗解释 语言(Language) 解释:BRAIN 平台支持使用快速表达式(Fast Expression)语言。 例子:快速表达式就像写公式,比如 price + volume,简单易懂且高效。更多内容可以参考“可用操作符”。 工具类型(Instrument type) 解释:目前只能使用“股票”作为工…...

mybatisPlus动态sql语句 ${ew.sqlSegment}

mybatis-plus的${ew.sqlSegment},${ew.sqlSelect},${ew.customSqlSegment} ew是mapper方法里的Param(Constants.WRAPPER) Wrapper queryWrapper对象 简答介绍: ${ew.sqlSelect}:拼接select SQL主体 Select("select ${ew.…...

ATGM336H-5N71支持多种卫星导航系统的定位模块

ATGM336H-5N7 1是 9.7X10.1尺寸,AT6558芯片,导航模块,GPSBDSGLONASS定位,16.369M晶振,标准输出 ,电源2.7V~3.6V, 支持 UART0和UART1接口 . ATGM336H-5N特性: Flash TCXO 天线检测 天线过流保护 …...

Maven中管理SNAPSHOT版本含义及作用

在开发过程中突然产生了一个疑问:IDEA中 maven deploy的依赖包的版本号,比如 1.0.0-SNAPSHOT是在哪配置的?在远程仓库中的版本和这个有关系吗 ? 在 Maven 中,-SNAPSHOT 后缀是用于标识项目版本为快照(Snapshot&#xf…...

从技术到艺术:探索大模型提示词工程,给您的AI作品去去味

1. 增加互动性元素 请在文章中增加互动性元素,如提问、调查或互动链接,鼓励读者参与和反馈,提高文章的互动性和读者的参与度。 2. 加强视觉元素的应用 请在文章中适当加入图表、图片和其他视觉元素,增强文章的视觉效果&#xff0…...

OSPF - 1类LSA(Router-LSA)

点击返回LSA对照表 1类LSA是OSPF计算最原始的材料,他会泛洪发给所有的路由器 LSA是包含在LSU中的,一条LSU能够携带多条LSA options位所有LSA都会有,用于标记起源于什么类型的区域,具体查看文章【邻居建立】 flags位是一类LSA特…...

HTTP 协议中,GET、PUT、POST、DELETE、OPTIONS 和 PATCH 区别

在 HTTP 协议中,GET、PUT、POST、DELETE、OPTIONS 和 PATCH 是常见的请求方法(HTTP Methods),用于定义客户端与服务器之间的交互方式。每种方法都有特定的语义和用途。以下是它们的详细解释: 1. GET 用途: 用于从服务…...

黄仁勋演讲总结(2种显卡,1个开源大模型,1个数据采集平台)

研发算力显卡RTX50系列,PC端显卡GB10,开源大模型Cosmos(用于机器人和自动驾驶), Isaac GR00T(人形机器人的数据采集平台)。 新一代 RTX 50 系列显卡 RTX 50 系列 GPU,相对之前系列&a…...

支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘

1、支持向量机算法介绍 支持向量机(Support Vector Machine,SVM)是一种基于统计学习理论的模式识别方法, 属于有监督学习模型,主要用于解决数据分类问题。SVM将每个样本数据表示为空间中的点,使不同类别的…...

掌握RabbitMQ:全面知识点汇总与实践指南

前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…...

Ansys Discovery 优化模式:掌握网格划分方法

本篇博客文章介绍了 Ansys Discovery 中高级 CFD 仿真的 Refine 模式下可用的网格划分方法。上一篇文章讨论了 Explore 模式中可用的网格划分技术。 Refine 模式下的高级网格划分技术 使用 Ansys Discovery 时,Refine 模式提供的网格划分技术比 Explore 模式多。这…...

CentOS: RPM安装、YUM安装、编译安装(详细解释+实例分析!!!)

目录 1.什么是RPM 1.1 RPM软件包命名格式 1.2RPM功能 1.3查询已安装的软件:rpm -q 查询已安装软件的信息 1.4 挂载:使用硬件(光驱 硬盘 u盘等)的方法(重点!!!) 1…...

(转)rabbitmq怎么保证消息不丢失?

RabbitMQ 可以通过以下多种机制来保证消息不丢失: 生产阶段 - 持久化队列和交换器: - 在声明队列和交换器时,将 durable 参数设置为 true ,确保它们是持久化的。这样,即使 RabbitMQ 节点重新启动,队列和交…...

List ---- 模拟实现LIST功能的发现

目录 listlist概念 list 中的迭代器list迭代器知识const迭代器写法list访问自定义类型 附录代码 list list概念 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素…...

电力场景输电线覆冰分割数据集labelme格式1227张2类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):1227 标注数量(json文件个数):1227 标注类别数:2 标注类别名称:["ice","powerline"] 每个…...

springboot 日志实现

日志 日志框架可以分为 日志门面(Facade) 和 日志实现(Implementation),Spring Boot 使用了 SLF4J 作为日志门面,Logback 或 Log4j2 作为日志实现。 日志门面以及日志实现 日志门面 日志门面&#xff0…...

Ubuntu Server安装谷歌浏览器

背景 服务器上跑爬虫服务器需要安装谷歌浏览器 安装 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb### sudo apt install ./google-chrome-stable_current_amd64.deb...

毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

计算机网路HTTP、TCP详解

HTTP HTTP基本概念 HTTP(超文本传输协议):HTTP是在计算机世界中两点之间传输文字、图片、视频等超文本内容数据的约束与规范。 常见状态码: 2xx:报文被收到,已经在正确处理中。 3xx:重定向…...

小程序未来趋势预测:技术革新与市场前景

一、引言 在数字化转型加速的时代,小程序作为一种轻量级、无需下载安装的应用形式,凭借其快速开发、易于使用的特点,迅速崛起并成为企业和开发者拓展业务的重要工具。随着移动互联网的进一步普及和用户对便捷应用体验的需求增长,…...

JavaEE初阶——计算机工作原理

一、什么是JavaEE JavaEE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为 J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器…...

Web前端ui框架

文章目录 Element简介 Ant Design vue简介关键特点: iview简介 Element 官网:https://element.eleme.cn/#/zh-CN/component/installation添加链接描述 简介 Elementui 一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 Ant Design …...

炸弹 (boom.c)

炸弹 (boom.c) 时间限制: 800ms 内存限制: 256000KiB 进度: 57/12406 0.5% 题目描述 出题助教: Sakiyary 验题助教: Corax、XiEn、ErinwithBMQ、runz、MacGuffin、Bob 维多利亚的腐烂荒野上出现了 N 个魔物,你和小维需要抓紧时间调配炸弹对付它们。 荒野可以视…...

【C语言】可移植性陷阱与缺陷(八): 随机数的大小

在C语言编程中,随机数的生成和使用是一个常见的需求。然而,由于不同平台上的C标准库实现可能存在差异,随机数的生成和使用也可能面临可移植性问题。本文将深入探讨C语言中随机数的大小与可移植性相关的陷阱与缺陷,并提供相应的解决…...

SSL VPN

SSL VPN 是什么? 是采用SSL/TLS协议来实现远程接入的一种轻量级 VPN 技术。利用 SSL 协议提供的基于证书的身份认证、数据加密和消息完整性验证机制,可以为应用层之间的通信建立安全连接。因为 SSL 协议内置于浏览器中,使用 SSL VPN 可以免于…...

C语言:函数

目录 1.函数的解释 2.C语言函数的分类 2.1库函数 2.2自定义函数 2.2.1自定义函数的语法格式 2.2.2自定义函数的实践 (1)第一题:欢迎光临 (2)第二题 打印数字的平方 ​编辑 (3)第三题 计算和 3.函数的参数 3.1值传递的表现 --- 形参 3.2地址传递的表现 -…...

Vue 环境配置与项目创建指南

1. 前置要求 在开始配置 Vue 开发环境之前,需要确保以下工具已安装: Node.js:Vue 的构建工具依赖 Node.js。 npm 或 yarn:Node.js 自带 npm 包管理工具,也可以选择安装 yarn。 安装 Node.js 前往 Node.js 官网 下…...

关于物联网的基础知识(三)——物联网技术架构:连接万物的智慧之道!连接未来的万物之网!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网的基础知识(三&a…...

iOS - Tagged Pointer

1. 基本结构 // Tagged Pointer 的内存布局 union TaggedPointer {uintptr_t bits; // 完整的指针值struct {uintptr_t data : 60; // 数据部分uintptr_t tag : 4; // 类型标记};// 扩展类型struct {uintptr_t extData : 52; // 扩展数据uintptr_t extTag : …...

基于SpringBoot的音乐网站与分享平台

基于SpringBoot的音乐网站与分享平台 摘要1. 研究背景2.研究内容3.系统功能 3.1前台首页功能模块3.2在线听歌功能模块3.3后台登录功能模块3.4在线听歌管理模块 4.部分功能代码实现5.源码分享(免费获取) 需要源码联系我即可(免费获取)~ ??大家点赞、收藏、关注、评论啦 、查…...

【机器学习篇】 科技异次元的超强 “魔杖”,开启奇幻新程

一起开启这场旅行吧,关注博主,点赞支持不迷路,下面一同欣赏本篇的美妙吧!! ! 博主主页: 羑悻的小杀马特.-CSDN博客 在当今科技飞速发展的时代,机器学习宛如一把来自科技异次元的超强…...

opencv CV_TM_SQDIFF未定义标识符

opencv CV_TM_SQDIFF未定义标识符 opencv4部分命名发生变换,将CV_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE;CV_TM_SQDIFF_NORMED改为TM_SQDIFF_NORMED。...

OneFlow的简单介绍

OneFlow 是北京一流科技有限公司旗下的采用全新架构设计的开源工业级通用深度学习框架。以下是关于 OneFlow 的详细介绍: 本篇文章的目录 特点 功能 应用场景 发展历程 特点 简洁易用的接口:为深度学习相关的算法工程师提供一套简洁易用的用户接口…...

如何配置【Docker镜像】加速器+【Docker镜像】的使用

一、配置Docker镜像加速器 1. 安装/升级容器引擎客户端​ 推荐安装1.11.2以上版本的容器引擎客户端 2. 配置镜像加速器​ 针对容器引擎客户端版本大于1.11.2的用户 以root用户登录容器引擎所在的虚拟机 修改 "/etc/docker/daemon.json" 文件(如果没有…...

《OpenCV》——模版匹配

文章目录 什么是模版匹配?函数介绍实例 什么是模版匹配? 模板匹配是在一幅图像中寻找与另一幅模板图像最匹配部分的技术。OpenCV 提供了多种模板匹配的方法,它在目标检测、物体识别等众多计算机视觉任务中有广泛的应用。例如,你有…...

【网络安全技术与应用】(选修)实验3 网络侦察

一、实验目的 培养学生综合运用搜索引擎、Whois数据库等手段对目标站点进行侦查的能力,了解站点查询常用的信息源及搜索工具,熟练掌握常见搜索工具的功能及使用技巧。培养学生使用搜索引擎在互联网查找特定设备的能力,熟悉联网设备搜索引擎的功能,熟练掌握设备搜索引擎的使…...

基于XGBoost的集成学习算法

目录 一、XGBoost原理1.1 提升方法(Boosting)1.2 提升决策树 (BDT)1.3 梯度提升决策树 (GBDT)1.4 极限梯度提升(XGBoost)1.4.1 XGBoost改进1.4.2 XGBoostcsklearn实现1.4.3 XGBoost回…...

【84键矮轴无线键盘】个人使用经历

推荐: 前行者MK84键(理由:价格实惠,键位布局好,其他都是可接受程度)K3 max(理由:除了短命的续航、脚垫容易脱落,已无明显短板) 我需要一把在小巧、舒适的主力…...

基于Arduino的FPV头部追踪相机系统

构建FPV头部追踪相机:让你置身于遥控车辆之中! 在遥控车辆和模型飞行器的世界中,第一人称视角(FPV)体验一直是爱好者们追求的目标。通过FPV头部追踪相机,你可以像坐在车辆或飞行器内部一样,自由…...

Flutter:邀请海报,Widget转图片,保存相册

记录下,把页面红色区域内的内容,转成图片后保存到相册的功能 依赖 # 生成二维码 qr_flutter: ^4.1.0 # 保存图片 image_gallery_saver_plus: ^3.0.5view import package:demo/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; i…...

CSS——16. nth—child序列选择器1

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>nth-child选择器</title><style type"text/css">/* 选择的是li的父元素&#xff08;ul&#xff09;中的第9个li子元素 */li:nth-child(9){color: red…...

【HarmonyOS 5.0】从0到1开发购物应用App(二):登录页对接口

【HarmonyOS Arkts笔记】http网络请求封装 【HarmonyOS Arkts笔记】ohos.data.preferences用户首选项实现存储信息 登录页 点击登录按钮调用login()方法 import { promptAction, router } from kit.ArkUI; import loginApi from "../../api/login" import Prefere…...

asp.net core webapi中的数据注解与数据验证

在这一课中&#xff0c;主要讲解了如何在 Web API 中使用数据注解&#xff08;Data Annotations&#xff09;和进行数据验证&#xff0c;以确保请求数据的有效性和完整性。 在 Web API 中&#xff0c;数据验证是确保客户端传递的数据符合业务规则和格式要求的关键步骤。数据注…...

VulnHub—potato-suncs

使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato&#xff0c;就想着爆破一下密码 hydr…...

uniapp 微信小程序 自定义日历组件

效果图 功能&#xff1a;可以记录当天是否有某些任务或者某些记录 具体使用&#xff1a; 子组件代码 <template><view class"Accumulate"><view class"bx"><view class"bxx"><view class"plank"><…...

云架构Web端的工业MES系统设计之区分工业过程

云架构Web端的工业MES系统设计之区分工业过程 在当今数字化浪潮席卷全球的背景下,制造业作为国家经济发展的重要支柱产业,正面临着前所未有的机遇与挑战。市场需求的快速变化、客户个性化定制要求的日益提高以及全球竞争的愈发激烈,都促使制造企业必须寻求更加高效、智能的生产…...