其他
K8s 网关选型初判:Nginx 还是 Envoy?
作 者 | 张添翼(澄潭)
为了避免混淆,我们先对一些关键定义做一些厘清:
传统网关:未作容器化改造,未启用 K8s,通过流量网关与业务网关两层网关来构建,流量网关提供全局性的、与后端业务无关的策略配置,例如 Tengine 就是典型的流量网关;业务网关提供独立业务域级别的、与后端业务紧耦合策略配置,随着应用架构模式从单体演进到现在的分布式微服务,业务网关也有了新的叫法 - 微服务网关。
K8s 网关:即云原生网关,也被称为下一代网关,Ingress 成为 K8s 生态的网关标准,促使流量网关和业务网关,合二为一。基于 Ingress 规范的实现主要分为基于 Nginx 和基于 Envoy 两大阵营,基于 Nginx 的 Nginx Ingress Controller 是目前大多数 K8s 集群的选择,基于 Envoy 的实现作为后起之秀,大有赶超之势。
MSE 云原生网关:是基于 Envoy,做了深度优化的云上服务。
网关规格:16 核 32 G * 4 节点ECS 型号:ecs.c7.8xlarge
存活健康检查(livenessProbe)在高负载时容易超时失败,社区在 0.34 版本通过减少冗余检测进行了一定的优化,但问题仍然存在。
在开启了 prometheus 采集监控指标的情况下,高负载时会出现 OOM,导致容器被 kill。
不会与业务容器混跑在一个 ECS 节点上
网关的多个实例不会混跑在一个 ECS 节点上
提供网关可用性的 SLA 保障
更强劲的性能,更合理的架构,可以将网关资源成本降低至少 50%
更好的可靠性和 SLA 保障,纯托管免运维,背靠阿里云技术团队提供支持
更优的安全性保障,一次性解决现存 CVE 安全漏洞隐患,且内置 WAF 防护功能
平滑迁移方案
步骤一:在容器服务的应用市场中找到 mse-ingress-controller,并安装到目标 ACK 集群
步骤二:在 K8s 中配置 MseIngressConfig (配置指引),自动创建指定规格的 MSE 云原生网关
步骤三:从 Ingress 的 address 字段中获取 MSE 云原生网关的 IP,本地绑定 host,将业务域名解析到该 IP,完成业务测试
步骤四:修改业务域名的 DNS 权重配置,添加云原生网关 IP,并逐步调高权重,进行流量灰度
步骤五:完成灰度后,将业务域名原先的 IP 从 DNS 配置中移除,实现全部流量切到云原生网关
技 术 好 文
🔥谈谈技术能力
🔥技术架构的设计方法
记一次 JMeter 压测 HTTPS 性能问题
程序员最重要的八种软技能
企 业 案 例