一、Ingress服务发布架构¶
1.1 传统架构与 K8s 架构对比¶

传统服务发布架构流程:
1.用户在浏览器中输入域名
2.域名解析至业务的入口IP(一般为外部负载均衡器,比如阿里云的SLB或者DMZ的网关)
3.外部负载均衡器反向代理至内网负载均衡(比如阿里云的SLB或者Nginx)
4.内网负载均衡根据自身的配置找到对应的程序
k8s服务发布架构流程:
1.用户在浏览器中输入域名
2.域名解析至业务的入口IP(一般为外部负载均衡器,比如阿里云的SLB或者DMZ的网关)
3.外部负载均衡器反向代理至Kubernetes的入口(一般为Ingress,或者通过NodePort暴露的服务等)
4.Ingress根据自身的配置找到对应的Service,再代理到对应的Service上
5.最后到达Service对应的某一个Pod上
1.2 Ingress组成¶
Ingress相当于传统架构的nginx.conf,具有命名空间限制
Ingress Controller相当于传统架构的Nginx,没有命名空间限制

二、Ingress生产级高可用架构¶
在生产环境中,实现高可用的 Ingress 架构是非常重要的,因为 Ingress 控制着对集群内服务的流量路由和负载均衡。以下是一种常见的 Ingress 生产级高可用架构:
1.高可用 Ingress Controller:部署多个 Ingress Controller 实例,并将它们分布在不同的节点或可用区中,以确保在部分节点或区域故障时,其余 Ingress Controller 仍然可用。可以使用 Kubernetes 横向扩展功能来部署多个副本的 Ingress Controller。
2.外部负载均衡器:在 Ingress Controller 前面使用外部负载均衡器(如云厂商提供的负载均衡器或独立负载均衡器)来实现流量的分发。这样,即使某个 Ingress Controller 故障,负载均衡器仍然能够将流量路由到其他可用的 Ingress Controller。
3.内部负载均衡:对于 Ingress Controller 内部的流量负载均衡,可以使用一些负载均衡策略,如 Round Robin、Least Connections 或 IP Hash,确保流量均匀地分发给后端的服务实例。
4.备份和恢复:定期备份和持久化 Ingress Controller 的配置信息,以便在出现故障时快速恢复配置。同时,备份 Ingress Controller 的状态信息,例如 Session 状态,以保证无感知的恢复。
5.监控和告警:使用监控工具对 Ingress Controller 和后端服务进行监控,以及时发现潜在的故障并采取措施。设置合适的告警规则,及时通知运维人员。
6.异地多活:在有条件的情况下,可以考虑跨多个地理位置部署 Ingress Controller,以实现异地多活,提高整体的高可用性。
7.网络隔离:确保 Ingress Controller 所在的网络环境和后端服务的网络环境有适当的隔离,防止网络问题在整个系统中蔓延。
8.故障自动转移:使用合适的技术手段(如容器编排工具、Kubernetes 的节点故障转移等)实现 Ingress Controller 的自动转移和恢复,确保故障时的快速响应和恢复。
