K8s 网关选型初判:Nginx 还是 Envoy?
- 传统网关:未作容器化改造,未启用 K8s,通过流量网关与业务网关两层网关来构建,流量网关提供全局性的、与后端业务无关的策略配置,例如 Tengine 就是典型的流量网关;业务网关提供独立业务域级别的、与后端业务紧耦合策略配置,随着应用架构模式从单体演进到现在的分布式微服务,业务网关也有了新的叫法 - 微服务网关。
- K8s 网关:即云原生网关,也被称为下一代网关,Ingress 成为 K8s 生态的网关标准,促使流量网关和业务网关,合二为一。基于 Ingress 规范的实现主要分为基于 Nginx 和基于 Envoy 两大阵营,基于 Nginx 的 Nginx Ingress Controller 是目前大多数 K8s 集群的选择,基于 Envoy 的实现作为后起之秀,大有赶超之势。
- MSE 云原生网关:是基于 Envoy,做了深度优化的云上服务。
- 存活健康检查(livenessProbe)在高负载时容易超时失败,社区在 0.34 版本通过减少冗余检测进行了一定的优化,但问题仍然存在。
- 在开启了 prometheus 采集监控指标的情况下,高负载时会出现 OOM,导致容器被 kill,详细原因见相关 issue:https://github.com/kubernetes/ingress-nginx/pull/8397
- 不会与业务容器混跑在一个 ECS 节点上
- 网关的多个实例不会混跑在一个 ECS 节点上
- 提供网关可用性的 SLA 保障
- 更强劲的性能,更合理的架构,可以将网关资源成本降低至少 50%
- 更好的可靠性和 SLA 保障,纯托管免运维,背靠阿里云技术团队提供支持
- 更优的安全性保障,一次性解决现存 CVE 安全漏洞隐患,且内置 WAF 防护功能
- 步骤一:在容器服务的应用市场中找到 mse-ingress-controller,并安装到目标 ACK 集群
- 步骤二:在 K8s 中配置 MseIngressConfig (配置指引),自动创建指定规格的 MSE 云原生网关
- 步骤三:从 Ingress 的 address 字段中获取 MSE 云原生网关的 IP,本地绑定 host,将业务域名解析到该 IP,完成业务测试
- 步骤四:修改业务域名的 DNS 权重配置,添加云原生网关 IP,并逐步调高权重,进行流量灰度
- 步骤五:完成灰度后,将业务域名原先的 IP 从 DNS 配置中移除,实现全部流量切到云原生网关
K8s 网关选型初判:Nginx 还是 Envoy?的更多相关文章
- API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd API 网关出现的原因
API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd http://www.infoq.com/cn/articles/compa ...
- 庐山真面目之六微服务架构Consul集群、Ocelot网关集群和Nginx版本实现
庐山真面目之六微服务架构Consul集群.Ocelot网关集群和Nginx版本实现 一.简介 在上一篇文章<庐山真面目之五微服务架构Consul集群.Ocelot网关和Nginx版本实 ...
- API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd(转)
前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay Çelik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx 作 ...
- API 网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd
前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay Çelik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx 作 ...
- 【k8s】使用k8s部署一个简单的nginx服务
名词解释 Namespace 表示命名空间 Deployment 表示pod发布 Service 表示多个pod做为一组的集合对外通过服务的表示 kubectl 是k8s的命令行操作命令,可以创建和更 ...
- 初尝 nginx
第一次尝试用 nginx,记录下几个简单命令: // 启动 start nginx // 测试并设置配置文件 nginx -t -c conf\nginx.conf // 修改配置文件后重载 ngin ...
- " 初窥 " nginx
1. 无题 第一次听到Nginx这个词,还是两年前的事儿了,最近常逛CSDN,越来越频繁的接触到这个词汇,今天看了些资料,简单的总结下,作为入门. 2. 背景介绍: Nginx (发音同 engine ...
- 跟我学SpringCloud | 第九篇:服务网关Zuul初
SpringCloud系列教程 | 第九篇:服务网关Zuul初探 前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散 ...
- k8s master节点高可用 nginx+keepalived配置文件
nginx配置 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; i ...
- 浅谈 k8s ingress controller 选型
大家好,先简单自我介绍下,我叫厉辉,来自腾讯云.业余时间比较喜欢开源,现在是Apache APISIX PPMC.今天我来简单给大家介绍下 K8S Ingress 控制器的选型经验,今天我讲的这些内容 ...
随机推荐
- Educational Codeforces Round 141:C. Yet Another Tournament
一.来源:Problem - C - Codeforces 二.题面 三.思路 读题: 其他人的胜场由位次决定,对于第i位,其胜场为i-1 人数为\(5·10^5\),不是5(看错了) 每个人和自己比 ...
- 记本地新建一个gradle方式springboot项目过程
打算使用gradle在idea新建个springboot项目,然后坑很多,记录一下 原来我的idea应该是社区版,新建项目时候没有可以选择spring相关配置,然后卸载了重装,之前问题是启动是启动起来 ...
- Linux 串口驱动实例简单分析(x86 8250驱动(16550A),TIOCMGET, TIOCMSET, RTS)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 浅谈Rust数据所有权
Rust的目标之一,是能够作为一门内存高效且内存安全的语言.本文我们将重点关注Rust关于"内存高效"的语言设计,让读者能够建立起对Rust的基本认知. 内存高效 一个不恰当的比喻 ...
- C#实时监测文件夹变化
在开发各种应用程序时,我们经常需要对文件系统中的文件或文件夹进行实时监测,以便在文件内容改变.文件被创建或删除时能够及时做出反应.在 C# 中,System.IO.FileSystemWatcher ...
- Python简单程序设计(Time篇)
如题: 解题方式如下:
- 记录--优雅解决uniapp微信小程序右上角胶囊菜单覆盖问题
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 大家好,今天聊一下在做uniapp多端适配项目,需要用到自定义导航时,如何解决状态栏塌陷及导航栏安全区域多端适配问题,下文只针对H5 ...
- 性能测试系列:Jmeter使用记录
jmeter配置环境变量vi /etc/profileexport PATH=$PATH:/tmp/jmeter/apache-jmeter-5.4.1/binsource /etc/profile ...
- KingbaseES V8R6 中walminer的使用
前言 walminer工具可以帮助dba挖掘wal日志中的内容,看到某时间对应数据库中的具体操作.例如挖掘日志后可以看到数据库某时间有哪些dml语句. walminer的限制与约束 WalMiner工 ...
- KingbaseES 查询优化消除SubPlan
说明: 日常业务系统在使用SQL语句进行查询时,开发人员容易将sql查询的子查询放到select语句中进行使用,会造成sql性能的下降. 数据准备: test=# test=# select coun ...