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

Kubernetes部署apisix的理论与最佳实践(一)

#作者: stackofumbrella

文章目录

  • 简介
  • 主要特性
  • Apache APISIX的架构
  • APISIX的生态
  • APISIX的主要概念和组件
  • Apache APISIX Ingress概览

简介

Apache APISIX是Apache软件基金会下的云原生API网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。可以使用Apache APISIX来处理传统的南北向流量,也可以处理服务间的东西向流量。同时,它也支持作为K8s Ingress Controller来使用。

主要特性

多平台支持:APISIX提供了多平台解决方案,它不但支持裸机运行,也支持在Kubernetes中使用,还支持与AWS Lambda、Azure Function、Lua函数和Apache OpenWhisk等云服务集成。

全动态能力:APISIX支持热加载,这意味着不需要重启服务就可以更新APISIX的配置。Apache APISIX选择Nginx + Lua这个技术栈实现此原理。

精细化路由:APISIX支持使用NGINX内置变量做为路由的匹配条件,可以自定义匹配函数来过滤请求,匹配路由。

运维友好:APISIX支持与以下工具和平台集成:HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过APISIX Dashboard,运维人员可以通过友好且直观的UI配置APISIX。

多语言插件支持:APISIX支持多种开发语言进行插件开发,开发人员可以选择擅长语言的SDK开发自定义插件。

Apache APISIX的架构

在这里插入图片描述
在这里插入图片描述

APISIX的生态

从该图可以准确看到目前都支持了哪些周边生态。左侧是支持的协议,可以看到常见的7层协议有HTTP(S)、WebSockets、gRPC、HTTP/2、Dubbo、QUIC和物联网协议MQTT等,此外它还支持HTTP到gRPC的转换,4层协议有TCP/UDP。右侧部分则是一些开源或SaaS服务,比如SkyWalking、Prometheus 、Vault等。下面就是一些比较常见的操作系统环境、云厂商和硬件环境,也支持ARM64等更丰富的平台。

在这里插入图片描述

APISIX的主要概念和组件

Route:通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游应用。

Upstream:上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。

Admin API:用户可以通过Admin API控制APISIX实例。

Apache APISIX Ingress概览

在K8S生态中,Ingress作为表示K8S流量入口的一种资源,想要让其生效,就需要有一个Ingress Controller去监听K8S中的Ingress资源,并对这些资源进行相应规则的解析和实际承载流量。在当下趋势中,像Kubernetes Ingress Nginx就是使用最广泛的Ingress Controller实现。

而APISIX Ingress则是另一种Ingress Controller的实现。跟Kubernetes Ingress Nginx的区别主要在于APISIX Ingress是以Apache APISIX作为实际承载业务流量的数据面。如下图所示,当用户请求到具体的某一个服务/API/网页时,通过外部代理将整个业务流量/用户请求传输到K8S集群,然后经过APISIX Ingress进行后续处理。
从图中可以看到,APISIX Ingress分成了两部分。一部分是APISIX Ingress Controller,作为控制面它将完成配置管理与分发。另一部分APISIX Proxy Pod负责承载业务流量,它是通过CRD(Custom Resource Definitions)的方式实现的。Apache APISIX Ingress除了支持自定义资源外,还支持原生的 K8s Ingress资源。

在这里插入图片描述

http://www.xdnf.cn/news/17715.html

相关文章:

  • npm install报错~[master] npm install npm error code ERESOLVE npm err
  • 大数据系统架构模式:驾驭海量数据的工程范式
  • RabbitMQ 消息转换器详解
  • 心理咨询|学生心理咨询评估系统|基于Springboot的学生心理咨询评估系统设计与实现(源码+数据库+文档)
  • 使用TextureView和MediaPlayer播放视频黑屏问题
  • AI模型服务接入WAF防火墙
  • 【C++】哈希表的实现(unordered_map和unordered_set的底层)
  • DDIA第五章:分布式数据复制中的一致性与冲突处理
  • 触想定制化工业一体机化身渔业预警终端,守望渔船安全
  • Spring Boot 菜单删除功能的实现与事务管理
  • 【前端基础】16、结构伪类(注:粗略说明)
  • 数据上云有什么好处?企业数据如何上云?
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(一)FPGA 测温研究现状
  • 自由学习记录(81)
  • 【JAVA】使用系统音频设置播放音频
  • 零 shot 语义+在线闭环:深度学习让机器人学会“主动”
  • MySQL 数据操作全流程:创建、读取、更新与删除实战
  • 对比FRI 与 Ligero 证明大小
  • 怎么实现表征工程并强化模型的“事实性”“诚信性”
  • 深入解析大模型落地的四大核心技术:微调、提示词工程、多模态应用 及 企业级解决方案,结合代码示例、流程图、Prompt案例及技术图表,提供可落地的实践指南。
  • FreeRTOS学习:资源管理:互斥操作的本质
  • 腾讯云EdgeOne Pages深度使用指南
  • GPU指令集入门教程
  • 《 C Primer Plus》
  • 常用hook钩子函数
  • 快速了解DBSCAN算法
  • Vue.js设计于实现 - 响应式(三)
  • 音视频学习(五十二):ADTS
  • Graham 算法求二维凸包
  • Python 2025:最新技术趋势与展望