MCI概述
为什么需要MCI
在传统的Kubernetes集群中,每个集群都有其负载均衡器和Ingress,这使得在多个集群之间进行负载均衡和流量路由变得困难。UCS为多集群提供了统一的流量入口MCI(Multi Cluster Ingress),帮助您更加简单高效地跨集群、跨区域进行负载均衡和流量路由,进而提高应用程序的可用性和可靠性。
MCI是一种多集群Ingress资源对象,可以根据指定规则将外部流量路由到多个集群内的Pod。使用MCI,用户可自定义转发规则,完成对访问流量的细粒度划分。图1展示了流量如何从MCI流向集群:从域名 foo.example.com 流入的流量流向了两个集群中带有标签 app:foo 的 Pod,从域名goo.example.com 流入的流量流向了两个集群中具有标签 app:goo的 Pod。
具体来说,MCI的优势在于:
- 多集群负载均衡:MCI为用户提供统一入口,将流量分发到多个Kubernetes集群中,与集群所处位置无关。
- 流量路由:使用MCI,用户可根据不同条件(URL、HTTP头、源IP等)自定义转发规则,将流量路由到不同集群,实现更灵活的流量控制。
- 高可用:MCI通过健康检查和流量自动切换,实现多集群、多区域的高可用性。
- 可扩展性:MCI发现和管理多个Kubernetes集群上的应用程序资源,实现应用程序自动扩展和部署。
- 安全性:MCI支持TLS安全策略和证书管理,保障应用程序的安全性。
MCI的工作原理
MCI的功能主要通过请求转发执行器MCI Controller实现。MCI Controller部署在集群联邦控制面,实时监控资源对象的变化,解析MCI对象定义的规则并负责将请求转发到相应的后端Service。
MCI Controller支持在同一个ELB实例(即同一IP)下设置不同域名、端口和转发规则,其工作原理如图2,实现流程如下:
- 部署人员在集群联邦控制面创建工作负载,并为其配置Service对象。
- 部署人员在集群联邦控制面创建MCI对象,并在MCI中配置流量访问规则,包括关联的负载均衡器、URL以及访问的后端Service及端口等。
- MCI Controller监控到MCI对象发生变化,会根据MCI中定义的规则,在ELB侧重新配置监听器以及后端服务器路由。
- 当用户进行访问时,流量根据ELB中配置的转发策略被转发到对应的后端Service关联的各个工作负载。