路由概述-九游平台
为什么需要ingress
service基于tcp和udp协议进行访问转发,为集群提供了四层负载均衡的能力。但是在实际场景中,service无法满足应用层中存在着大量的http/https访问需求。因此,kubernetes集群提供了另一种基于http协议的访问方式——ingress。
ingress是kubernetes集群中一种独立的资源,制定了集群外部访问流量的转发规则。如图1所示,用户可根据域名和路径对转发规则进行自定义,完成对访问流量的细粒度划分。
下面对ingress的相关定义进行介绍:
- ingress资源:一组基于域名或url把请求转发到指定service实例的访问规则,是kubernetes的一种资源对象,通过接口服务实现增、删、改、查的操作。
- ingress controller:请求转发的执行器,用以实时监控资源对象ingress、service、endpoint、secret(主要是tls证书和key)、node、configmap的变化,解析ingress定义的规则并负责将请求转发到相应的后端service。
ingress controller在不同厂商之间的实现方式不同,根据负载均衡器种类的不同,可以将其分成elb型和nginx型。cce支持上述两种ingress controller类型,其中elb ingress controller基于弹性负载均衡服务(elb)实现流量转发;而nginx ingress controller使用kubernetes社区维护的模板与镜像,通过nginx组件完成流量转发。
elb ingress controller工作原理
cce自研的elb ingress controller基于弹性负载均衡服务elb实现公网和内网(同一vpc内)的七层网络访问,通过不同的url将访问流量分发到对应的服务。
elb ingress controller部署于master节点上,与集群所在vpc下的弹性负载均衡器绑定,支持在同一个elb实例(同一ip)下进行不同域名、端口和转发策略的设置。elb ingress controller的工作原理如图2,实现步骤如下:
- 用户创建ingress资源,在ingress中配置流量访问规则,包括负载均衡器、url、ssl以及访问的后端service端口等。
- ingress controller监听到ingress资源发生变化时,就会根据其中定义的流量访问规则,在elb侧重新配置监听器以及后端服务器路由。
- 当用户进行访问时,流量根据elb中配置的转发策略转发到对应的后端service端口,然后再经过service二次转发访问到关联的各个工作负载。
在使用cce turbo集群 独享型elb实例时,pod ip直接从vpc中分配,支持elb直通pod。创建集群外部访问的ingress时,可使用elb对接clusterip服务,直接将pod作为elb监听器的后端服务器,外部流量可以不经过节点端口转发直接访问集群中的pod。
nginx ingress controller工作原理
nginx型的ingress使用弹性负载均衡(elb)作为流量入口,并在集群中部署来对流量进行负载均衡及访问控制。
nginx-ingress插件使用开源社区的模板与镜像,使用过程中可能存在缺陷,cce会定期同步社区版本来修复已知漏洞。请评估是否满足您的业务场景要求。
开源社区地址:
nginx型的ingress controller通过pod部署在工作节点上,因此引入了相应的运维成本和nginx组件运行成本,其工作原理如图4,实现步骤如下:
- 当用户更新ingress资源后,ingress controller就会将其中定义的转发规则写入到nginx的配置文件(nginx.conf)中。
- 内置的nginx组件进行reload,加载更新后的配置文件,完成nginx转发规则的修改和更新。
- 在流量访问集群时,首先被已创建的负载均衡实例转发到集群内部的nginx组件,然后nginx组件再根据转发规则将其转发至对应的各个工作负载。
ingress支持的service类型
由于elb ingress和社区开源的nginx ingress的实现原理不同,因此支持的service类型不同。
集群类型 |
elb类型 |
集群内访问(clusterip) |
节点访问(nodeport) |
---|---|---|---|
cce standard集群 |
共享型负载均衡 |
不支持 |
支持 |
独享型负载均衡 |
不支持(集群内访问服务关联实例未绑定eni网卡,独享型负载均衡无法对接) |
支持 |
|
cce turbo集群 |
共享型负载均衡 |
不支持 |
支持 |
独享型负载均衡 |
支持 |
不支持(节点访问服务关联实例已绑定eni网卡,独享型负载均衡无法对接) |
集群类型 |
elb类型 |
集群内访问(clusterip) |
节点访问(nodeport) |
---|---|---|---|
cce standard集群 |
共享型负载均衡 |
支持 |
支持 |
独享型负载均衡 |
支持 |
支持 |
|
cce turbo集群 |
共享型负载均衡 |
支持 |
支持 |
独享型负载均衡 |
支持 |
支持 |
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨