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