简介:在虚拟化时期的微服务架构下,业务通常采用流量网关 + 微服务网关的两层架构,流量网关负责南北向流量调度和安全防护,微服务网关负责东西向流量调度和服务治理,而在容器和 K8s 主导的云原生时代,Ingress 成为 K8s 生态的网关标准,赋予了网关新的使命,使得流量网关 + 微服务网关合二为一成为可能。

K8s Ingress简介

K8s集群内的网络与外部是隔离的,即在K8s集群外部无法直接访问集群内部的服务,如何让将K8s集群内部的服务提供给外部用户呢?K8s社区有三种方案:NodePort、LoadBalancer、Ingress,下图是对这三种方案的对比:

通过对比可以看到Ingress是更适合业务使用的一种方式,可以基于其做更复杂的二次路由分发,这也是目前用户主流的选择。

K8s Ingress现状

套用一句流行语:理想是丰满的、现实是骨感的,这句话放在K8s Ingress也同样适用,K8s希望通过Ingress来标准化集群入口流量的规则定义,但实际业务落地时需要的功能点要远比Ingress提供的多,为了满足业务诉求,各Ingress Provider也各出招数,总的来说解法分成两类:使用annotations扩展与使用新的CRD。下面使用图示来说明:

K8s Ingress Provider的发展趋势

Ingress Provider的百花齐放,站在用户角度各有利弊,好处是用户的可选项很多,而坏处也恰恰是选择太多,我们如何去选择一个适合自身业务的Ingress Provider呢?不妨先看看权威CNCF的统计数据:

直观的可以看出对于占据Ingress Provider首位的Nginx是在预期之内的,细看之下虽Nginx Ingress仍占据榜首,但其增长有点乏力,甚至有下降的态势;反观Envoy已经从2019年的第三位攀升至2020的第二位,其使用率也从2019年的不足20%攀升至2020年的37%,几乎成倍增长。

所谓透过现象看本质,为什么Envoy的增长这么快呢?总结起来有以下几点:

  1. Envoy诞生在分布式微服务的大背景下,其配置热更新、HTTP3、Wasm等特性非常贴合目前的使用场景,同时社区治理也非常健康,很对互联网大厂也深度参与其中。
  2. Envoy即可用作Ingress Provider,也是ServiceMesh中sidecar的事实领导者,使用同一种技术同时解决南北向与东西向流量调度也是用户选择Envoy的一大原因。
  3. Envoy是达到生产级要求的,是经Lyft大规模验证过的。

K8s Ingress Provider的新选择 - 云原生网关

在虚拟化时期的微服务架构下,业务通常采用流量网关 + 微服务网关的两层架构,流量网关负责南北向流量调度和安全防护,微服务网关负责东西向流量调度和服务治理,而在容器和 K8s 主导的云原生时代,Ingress 成为 K8s 生态的网关标准,赋予了网关新的使命,使得流量网关 + 微服务网关合二为一成为可能。

MSE 发布的云原生网关在能力不打折的情况下,将两层网关变为一层,不仅可以节省50%的资源成本,还可以降低运维及使用成本。

云原生网关的优势

1、性能更强劲

在开始介绍前先抛个问题:Nginx Ingress的性能与Nginx是等价的吗?带着这个疑问我们直接看压测数据对比:

有没有感觉很意外呢?说实话压测后包括我们自己也是有些意外,压测结论如下:

我们也查看了Nginx Ingress的实现以及社区反馈,由于其大量使用Lua脚本从而对性能带来了非常大的影响,K8s Nginx Ingress社区也有具体的issue:

Poor performance in benchmark · Issue #5658 · kubernetes/ingress-nginx · GitHub

社区压测Lua对Nginx Ingress的性能影响截图如下:

2、功能更丰富

云原生网关作为流量网关与微服务网关的二合一,其功能上同时提供丰富的安全认证与服务治理能力,同时在性能上也做了内核调优以及接下来要发布的硬件加速功能,结合阿里内部两年的大促经验在高可用建设上也进一步做了扩展,整体功能大图如下:

3、稳定更可靠

经过历年大促的验证,阿里内部积累了一套高可用保障方案,从研发时、运行时、变更时来控制风险提升稳定性,在每个阶段各自有手段去验证其高可用目标,图示说明如下:

云原生网关即将上线的重磅功能

1、TLS硬件加速(已上线)

目前HTTPS已经成为公网请求的主要使用方式,全部使用HTTPS后由于其要做TLS握手,相比HTTP势必性能上会有很大损耗,目前随着CPU性能的大幅提升,利用CPU的SIMD机制可以很好的加速TLS的性能,因此我们基于Intel Ice Lake处理器推出TLS硬件加速功能,通过压测验证启用TLS加速后QPS可以大幅提升,具体如下图:

2、内置Waf

作为面向南北向的公网网关,使用Waf防护异常流量是很常规的需求,而且随着互联网环境变得越来越复杂,用户对防护的诉求是持续增强的,常规做法是将流量先接入Waf安全网关,过滤后再将流量转发给流量网关,最后到达微服务网关;云原生网关希望内置Waf模块直接对接阿里云的Waf云产品,使得用户的请求链接只经过云原生网关就可以同时完成Waf防护、流量分发、微服务治理,即提升链路RT,也降低网关的运维复杂度,图示如下:

3、Wasm插件市场

Wasm作为目前非常火热的技术之一,其最受追捧的原因在于其可以支持多语言编写Wasm程序,且Wasm提供了一个很好的沙箱环境来控制程序的执行环境,Istiod与Envoy社区也已经对Wasm插件做了基础的支持,云原生网关希望在社区的基础上推出自己的插件市场,提升网关的可扩展性,方便用户自定义网关插件。我们也对现有的wasm runtime做了性能对比与测试,这些测试数据也会作为我们的开发依据,图示如下:

写在最后

MSE - 云原生网关,旨在为用户提供更可靠的、成本更低、效率更高的,符合 K8s Ingress 标准的企业级网关产品,更多发布详情移步直播间观看:K8s Ingress为什么选择MSE云原生网关?-云栖号-阿里云

原文链接

本文为阿里云原创内容,未经允许不得转载。

K8s Ingress Provider 为什么选择 MSE 云原生网关?的更多相关文章

  1. 云原生之旅 - 9)云原生时代网关的后起之秀Envoy Proxy 和基于Envoy 的 Emissary Ingress

    前言 前一篇文章讲述了基于Nginx代理的Kuberenetes Ingress Nginx[云原生时代的网关 Ingress Nginx]这次给大家介绍下基于Envoy的 Emissary Ingr ...

  2. 云原生2.0网关API标准发展趋势

    摘要:Gateway API希望取代Ingress API. 本文分享自华为云社区<云原生2.0网关API标准发展趋势>,作者:华为云云原生团队 . 云原生网关API标准背景及发展现状 G ...

  3. API 管理在云原生场景下的机遇与挑战

    作者 | 张添翼 来源 | 尔达Erda公众号 ​ 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...

  4. Aggregated APIServer 构建云原生应用最佳实践

    作者 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云 TKE 云原生 AI 产品的开发工作. 谢远东,腾讯高级工程师,Kubeflow Member.Fluid(CNC ...

  5. 云原生时代, Kubernetes 多集群架构初探

    为什么我们需要多集群? 近年来,多集群架构已经成为“老生常谈”.我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力.另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的 ...

  6. 云原生之旅 - 8)云原生时代的网关 Ingress Nginx

    前言 当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort, Ingress. LoadBalancer类型得结合各个Cloud Pr ...

  7. 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施

    作者 | 黄玉奇(徙远)  阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词 1219 即可下载本文 PPT 及实操演示视频. 导读:伴随 5G.IoT 的发展,边缘 ...

  8. 云原生生态周报 Vol. 15 | K8s 安全审计报告发布

    业界要闻 CNCF 公布 Kubernetes 的安全审计报告 报告收集了社区对 Kubernetes.CoreDNS.Envoy.Prometheus 等项目的安全问题反馈,包含从一般弱点到关键漏洞 ...

  9. 云原生API网关全生命周期管理Apache APISIX探究实操

    @ 目录 概述 定义 NGINX 与 Kong 的痛点 APISIX 的技术优势 特性 架构 应用场景 主要概念 部署 快速入门 quickstart安装 Admin API创建路由 RPM安装 安装 ...

  10. 给 K8s API “做减法”:阿里巴巴云原生应用管理的挑战和实践

    作者 | 孙健波(天元)  阿里巴巴技术专家本文整理自 11 月 21 日社群分享,每月 2 场高质量分享,点击加入社群. 早在 2011 年,阿里巴巴内部便开始了应用容器化,当时最开始是基于 LXC ...

随机推荐

  1. Linux高级IO

    readv.writev API: #include <sys/uio.h> ssize_t readv(int fd, const struct iovec* vector, int c ...

  2. 28_FFmpeg音视频解封装格式

    目录 一.什么是封装格式 二.使用 FFmpeg 实现解封装 1.创建解封装上下文打开流媒体文件 2.检索流信息 2.1.检索流信息 2.2.导出流信息到控制台 3.初始化音频解码器查找合适的音视流和 ...

  3. 记录--你的网站如何接入QQ,微信登录

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 主要实现步骤 对接第三方平台,获取第三方平台的用户信息. 利用该用户信息,完成本应用的注册. qq登录接入 接入前的配置 qq互联 登录后 ...

  4. TP6框架--CRMEB学习笔记:项目初始化+环境配置

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近在研究一个基于TP6的框架CRMEB,这里分享下我的开发心得 首先要获取原始项目文件 这里是git地址 https://gitee.c ...

  5. iOS Modern Collection View

    TL;DR 使用的技术: Compositional layout + Diffable data source.iOS 14+. 创建 layout 以描述布局: 创建 dataSource 以提供 ...

  6. 【Jenkins】Jenkins 运行权限问题

    yum安装的Jenkins 配置文件默认位置/etc/sysconfig/jenkins 默认jenkins服务以jenkins用户运行,这时在jenkins执行maven脚本时可能会发生没有权限操作 ...

  7. AXI4自定义FPGA外设理论基础

    AXI4自定义FPGA外设理论基础 1.理论目的 在前面的基于AXI4的自定义GPIO的实验中,大概地了解了AXI4的工作模式,即以寄存器为缓冲,实现操作和传输.那个实验只是将自定义的FPGA连接到现 ...

  8. KingbaseES V8R6 运维案例 --ksql访问动态库问题

    KingbaseES V8R6数据库运维案例之---ksql访问动态库问题 案例说明: CentOS环境下,在安装和初始化数据库实例后,启动数据库服务,通过ksql连接访问时出现以下故障: 经检查,是 ...

  9. 5W1H聊开源之What——开源协议有哪些?

    开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议.开源协议规定了用户在使用开源软件时的权利和责任,虽然不一定具备法律效力,但是当涉 ...

  10. #树链剖分,背包#洛谷 5391 [Cnoi2019]青染之心

    题目 Cirno初始有一个空的物品序列,一个大小为 \(V\) 的背包,现在你有 \(q\) 个操作,分为两种: add \(x\) \(y\) : 表示加入一种体积为 \(x\), 价值为 \(y\ ...