简介:在虚拟化时期的微服务架构下,业务通常采用流量网关 + 微服务网关的两层架构,流量网关负责南北向流量调度和安全防护,微服务网关负责东西向流量调度和服务治理,而在容器和 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. Electron 开发过程中主进程的无法看到 console.log 输出怎么办

    开发过程中命令行工具(powershell.terminal)内无法看到 console.log 输出 Eelectron 的在开发过程中主进程 NodeJS 内往往需要 console.log 来进 ...

  2. vue基础知识和原理(一)

    1. vue基础知识和原理 1.1 初识Vue 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 demo容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法 demo容器 ...

  3. 记录--vue中动态引入图片为什么要是require, 你不知道的那些事

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 相信用过vue的小伙伴,肯定被面试官问过这样一个问题:在vue中动态的引入图片为什么要使用require 有些小伙伴,可能会轻蔑一笑:呵, ...

  4. 开发必会系列:hibernate事务

    一  事务定义及特性 1.数据库事务的定义:数据库事务(Database Transaction) 是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执 ...

  5. C# OpenCvSharp 轮廓检测

    效果 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...

  6. OpenCV常量值含义表

    色彩空间转换常量 常量值 说明 cv2.COLOR_BGR2GRAY 从 BGR 色彩空间转换到 GRAY 色彩空间 cv2.COLOR_RGB2GRAY 从 RGB 色彩空间转换到 GRAY 色彩空 ...

  7. MongoDB java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

    详细报错如下: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer     at or ...

  8. 06 PSP成熟度模型【软件过程与管理】

    PSP成熟度模型(Personal Software Process) 个体度量过程 PSP3 周期开发 个体计划过程 PSP2 代码评审 设计评审 PSP2.1 设计模板 个体质量管理过程 PSP1 ...

  9. Sealos 开源初创公司 Trending 全球 TOP50,中国第二!

    今年,Runa Capital (鲁纳资本) 评选出了 2023 年增长最快的 50 家开源创业公司,Sealos 压轴登场,总共有两家中国公司上榜,Sealos 排名第二. Runa Capital ...

  10. 实际项目中如何使用Git做分支管理

    前言 Git是一种强大的分布式版本控制系统,在实际项目开发中使用Git进行分支管理是非常常见的做法,因为它可以帮助团队高效的协作和管理项目的不同版本,今天我们来讲讲在实际项目中最常用的Git分支管理策 ...