apisix云原生网关

定义

企业级网关通过域名、路由将请求分发到对应的应用上,通常承载数千个服务的流量,对稳定性有较高要求。

在这里插入图片描述CNCF全景图

选型

Kubernetes抽象出两个核心概念:Service,为多个Pod提供统一的访问入口;Ingress(之后由Gateway API替代),定义了如何将外部流量路由到集群内部的服务。

Ingress的具体实现需要依靠底层组件读取相关配置,并将其转换为Nginx可执行的配置。此外,云原生网关通常部署在Kubernetes集群内部,必须能够解析内部服务的IP,并能够通过Kubernetes网络转发请求。

由此可以概括出云原生网关应具备的关键能力:
1、能够解析Ingress资源对象,并将其转换为自己的配置;
2、能够获取内部服务IP,实现多样化的负载均衡策略;

在这里插入图片描述
云原生网关分为以下三类:

1、基于nginx,使用openresty作为控制平面;
2、基于envoy,需要学习xDS协议,是云原生生态中积极推动的项目代表着未来的发展方向;
3、自研解决方案,golang编写,由于转发内核都是自研的,稳定性和兼容性一般;

nginx类ingress功能有限,最大的问题是其配置生效不是动态的。架构设计是基于work和master进程,其中master进程负责管理,work进程处理请求。如果需要修改配置,必须重启所有的work进程。

架构

在这里插入图片描述

数据面DP:实际处理流量转发的服务,在这里就是Nginx;

控制面CP:对接ingress规范,将配置的路由转换为数据面可以理解的格式,并下发这些配置,使之生效,包括:上游服务、消费者、插件和证书等;

数据存储:建议为APISIX单独部署一套Etcd;

优点:控制面出现问题,业务流量处理也不会受到影响,只是无法更新新的配置;

安装

apisix官方

apisix部署

在这里插入图片描述

流量转发

一旦流量成功匹配路由规则后,APISIX会将其转发给上游服务。

APISIX能够绕过Service,直接对接Pod,使整个流量转发过程变成APISIX到Pod的直接通信。从Kubernetes的网络模型来看,这就是集群内Pod到Pod之间的通信。

通常,会将网关组件独立部署在几台服务器上,因此网关转发请求到Pod,即服务本身需要跨节点通信。在Kubernetes的网络模型中,这种跨节点通信是由CNI插件来实现的。

模式

hostnetwork

优点:使用简单,并且能够传递真实IP。

将APISIX的network namespace直接附加到k8s node上,这样APISIX就不会使用Pod网络的地址,而是使用node的IP。数据转发时,受到kube-proxy配置的规则约束,经由postrouting链处理,再通过CNI跨节点到达目标服务。

缺点:没有使用网络虚拟化,最大的影响是无法使用滚动发布来更新网关服务。

external load balancer

需要外部硬件负载均衡,使用LoadBalancer类service,流量由外部SLB处理并转发到集群内。转发过程繁琐。

externalIPs

spec:ports:- name: apisix-gatewayprotocol: TCPport: 80targetPort: 80nodePort: 30238- name: tlsprotocol: TCPport: 443targetPort: 443nodePort: 32435selector:app.kubernetes.io/instance: apisixapp.kubernetes.io/name: apisixtype: NodePortexternalIPs:- A.B.x.xsessionAffinity: NoneexternalTrafficPolicy: Local

在这里插入图片描述

1、如果service为ClusterIP类型,则k8s层面的负载均衡有效,流量平均转发到后端Pod;

2、如果需要保留源IP地址,service须为NodePort类型,并将externalTrafficPolicy设置为Local。内核实现把发往external IP的80端口的请求转发给Pod,但会失去SVC服务负载均衡的能力;

3、由于apisix部署时有外置负载均衡提供vip,确保即使在某些节点出现故障时,服务仍然可以保持高可用,所以选择2;

4、此模式下,NodePort类型service不再发挥作用,因此可以在防火墙上只开放80、443,关闭30238、32435;

5、所有node依然通过iptables设置30238端口相关的规则,实际没用,因为externalTrafficPolicy设置为Local,只处理发给Pod所在node的流量;

6、登录对应node可以访问80、30238及443、32435;

7、为了更好地理解流量的路由路径,查看iptables发现,80端口的规则与ClusterIP对应,externalIPs使用A.B.x.x来匹配;

结论:
externalIPs实际上是NodePort类型service,借此指定端口映射到主机上,同时配合externalTrafficPolicy策略,将流量限制到指定的IP列表中。在三种模式中,使用了externalIPs,因为首先解决了hostnetwork不利于Pod变更的问题,其次利用了k8s原有功能实现,减少了转发路径,同时也保留了源IP。

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

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

相关文章

DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 原文链接:DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…

18770 差值最大

### 思路 为了找到两个数x和y使得x - y的值最大,并且x在y的右侧,我们可以使用以下方法: 1. 从右向左遍历数组,记录当前遍历到的最大值max_right。 2. 对于每个元素a[i],计算max_right - a[i],并更新最大差…

《RabbitMQ篇》消息应答和发布确认

消息应答 消息应答机制:消费者接收信息并处理完之后,告诉rabbitmq该信息已经处理,rabbitmq可以把该信息删除了. 消息自动重新入队:如果处理某个消息的消费者异常关闭了,没有发送ACK确认,rabbitmq会将其重…

C++ | Leetcode C++题解之第463题岛屿的周长

题目&#xff1a; 题解&#xff1a; class Solution {constexpr static int dx[4] {0, 1, 0, -1};constexpr static int dy[4] {1, 0, -1, 0}; public:int dfs(int x, int y, vector<vector<int>> &grid, int n, int m) {if (x < 0 || x > n || y <…

YOLO11改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 上下文Transformer&#xff08;CoT&…

软件功能测试重点和流程有哪些?专业软件测评服务公司推荐

软件功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。功能测试也叫黑盒测试或数据驱动测试&#xff0c;只需考虑需要测试的各个功能&#xff0c;不需要考虑整个软件的内部结构及代码.一般从软…

dvwa:暴力破解、命令注入、csrf全难度详解

暴力破解 easy模式 hydra -L /usr/share/wordlists/SecLists-master/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/SecLists-master/Passwords/500-worst-passwords.txt 192.168.72.1 http-get-form "/dvwa/vulnerabilities/brute/:username^USER^&…

矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张,

矿井人员数据集&#xff0c;用于目标检测&#xff0c;深度学习&#xff0c;采用txt打标签&#xff0c;即yolo格式&#xff0c;也有原文件可以自己转换。总共3500张图片的数据量&#xff0c;划分给训练集2446张&#xff1a; ### 矿井人员数据集用于目标检测的详细说明 #### 1. …

Flutter包管理(三)

1、作用 在APP的实际开发过程中往往会依赖很多包&#xff0c;而这些包之间存在着交叉依赖、版本依赖&#xff0c;由开发者自己管理手动管理会非常麻烦&#xff0c;每种开发生态或编程官方会提供一些包的管理工具&#xff0c;在Flutter中我们在pubspec.yaml文件中来管理第三方依…

DDoS攻击快速增长,如何在抗ddos防护中获得主动?

当下DDoS攻击规模不断突破上限。前段时间&#xff0c;中国首款3A《黑神话&#xff1a;悟空》也在一夜之内遭受到28万次攻击DDoS攻击&#xff0c;严重影响到全球玩家的游戏体验。Gcore发布的数据也显示了 DDoS攻击令人担忧的趋势&#xff0c;尤其是峰值攻击已增加到了令人震惊的…

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

一、隐藏敏感信息 之前我们对 /user/me 路径&#xff0c;直接返回了登录的所有用户信息&#xff0c;其中的 passward 等敏感信息也会被返回到前端&#xff0c;这是很危险的&#xff0c;故我们需要选择性的返回用户信息&#xff0c;隐藏敏感用户信息 我们可以创建一个 UserDTO…

【Qt】详细Qt基础 (包括自定义控件)

目录 QT 概述创建项目项目文件&#xff08;. pro&#xff09;main.cppmainwindow.uimainwindow.hmainwindow.cpp 窗口类QWidget 窗口显示QDialog 窗口 QPushButton创建显示 对象树基本概念功能 坐标体系控件Item WidgetsQListWidgetQTreeWidgetQTableWidget 自定义控件 QT 概述…

一键安装与配置Stable Diffusion,轻松实现AI绘画

随着技术的迭代&#xff0c;目前 Stable Diffusion 已经能够生成非常艺术化的图片了&#xff0c;完全有赶超人类的架势&#xff0c;已经有不少工作被这类服务替代&#xff0c;比如制作一个 logo 图片&#xff0c;画一张虚拟老婆照片&#xff0c;画质堪比相机。 最新 Stable Di…

当今SNARKs全景

1. 引言 前序博客有&#xff1a; ZKP历史总览SNARK原理示例SNARK性能及安全——Prover篇SNARK性能及安全——Verifier篇Transparent 且 Post-quantum zkSNARKsSNARK DesignRollup项目的SNARK景观 SNARKs因&#xff1a; proof size证明时长验证时长密码学信任假设是否需要tr…

前端开发设计模式——装饰器模式

目录 一、装饰器模式的定义和特点 1.定义 2.特点 二、装饰器模式的实现方式 1.在原生JS中实现&#xff08;以类的形式为例&#xff09; 2、在Vue中实现&#xff08;以指令和混入为例&#xff09; 2.1、指令方式实现装饰功能 2.2、混入方式实现装饰功能 三、装饰器模式的…

基于方块编码的图像压缩matlab仿真,带GUI界面

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 编码单元的表示 4.2编码单元的编码 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 下图是随着方块大小的变化&#xff0c;图像的压缩率以及对应的图像质量指标PSN…

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件&#xff0c;而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档&#xff0c;无论相关方…

TCN-Transformer时间序列预测(多输入单预测)——基于Pytorch框架

1 数据集介绍 我们使用的数据集包含以下几个重要的属性&#xff1a; date&#xff08;日期&#xff09; open&#xff08;开盘价&#xff09; high&#xff08;最高价&#xff09; low&#xff08;最低价&#xff09; close&#xff08;收盘价&#xff09; pre_close&…

IDE启动失败

报错&#xff1a;Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译&#xff1a;无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器&#xff0c;找到PID为24264的CPU线程&#xff0c;强行结束即可。 【Ct…

EXCEL_光标百分比

Public Sub InitCells()Dim iSheet As LongFor iSheet Sheets.Count To 1 Step -1Sheets(iSheet).ActivateActiveWindow.Zoom 85ActiveWindow.ScrollRow 1ActiveWindow.ScrollColumn 1Sheets(iSheet).Range("A1").ActivateNext iSheetEnd Sub对日项目中的文档满天…