在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,其几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod。
Ingress资源仅支持配置HTTP流量的规则,无法配置一些高级特性,例如负载均衡的算法、Sessions Affinity等,这些高级特性都需要在Ingress Controller中进行配置。
Nginx Ingress
当前Kubernetes官方维护的是Nginx Ingress Controller,ACK基于社区版的Nginx Ingress Controller进行了优化。当在创建ACK集群时,您选择安装的Nginx Ingress Controller组件即为ACK定制版的Nginx Ingress Controller组件。
Kubernetes中Service、Nginx Ingress与Nginx Ingress Controller有着以下关系:
- Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
- Nginx Ingress是反向代理规则,用来规定HTTP/HTTPS请求应该被转发到哪个Service所对应的Pod上。例如根据请求中不同的Host和URL路径,让请求落到不同Service所对应的Pod上。
- Nginx Ingress Controller是一个反向代理程序,负责解析Nginx Ingress的反向代理规则。如果Nginx Ingress有增删改的变动,Nginx Ingress Controller会及时更新自己相应的转发规则,当Nginx Ingress Controller收到请求后就会根据这些规则将请求转发到对应Service的Pod上。
ALB Ingress
ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)之上提供更为强大的Ingress流量管理方式,兼容Nginx Ingress,具备处理复杂业务路由和证书自动发现的能力,支持HTTP、HTTPS和QUIC协议,完全满足在云原生应用场景下对超强弹性和大规模七层流量处理能力的需求。
Kubernetes中Service、Ingress与AlbConfig有着以下关系:
- Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
- Ingress是反向代理规则,用来规定HTTP/HTTPS请求应该被转发到哪个Service上。例如:根据请求中不同的Host和URL路径,让请求转发到不同的Service上。
- AlbConfig是在ALB Ingress Controller提供的CRD资源,使用AlbConfig CRD来配置ALB实例和监听。一个AlbConfig对应一个ALB实例。
Nginx Ingress与ALB Ingress对比
Nginx Ingress组件需要您自行运维,如果您对网关定制有强烈的需求,可以选择Nginx Ingress。ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer),支持自动弹性、全托管免运维,单个ALB实例支持100万QPS,提供更为强大的Ingress流量管理。
差异如下表所示:
类型 | Nginx Ingress | ALB Ingress |
---|---|---|
产品定位 | 提供七层流量处理能力与丰富的高级路由功能。自有组件,可根据需求进行高度定制化。 | 提供七层流量处理能力与丰富的高级路由功能。专门面向应用层负载场景,与容器深度集成,支持多种服务灰度策略,包括金丝雀、A/B Test、蓝绿、自定义流量比例分发等。支持超大容量、自动弹性和免运维。支持与多种云产品结合,如WAF、FC、PrivateLink、TR等。 |
产品架构 | 基于Nginx+Lua插件扩展。 | 基于阿里洛神云网络平台。基于CyberStar自研平台,支持自动弹性伸缩。 |
基础路由 | 基于内容、源IP的路由。支持HTTP标头改写、重定向、重写、限速、跨域、会话保持等。支持请求方向转发规则和响应方向转发规则,其中响应方向转发规则可以通过扩展Snippet配置实现。 | 基于内容、源IP的路由。支持HTTP标头改写、重定向、重写、限速、跨域、会话保持等。支持请求方向转发规则和响应方向转发规则。 |
支持协议 | 支持HTTP和HTTPS协议。支持WebSocket、WSS和gRPC协议。 | 支持HTTP和HTTPS协议。支持WebSocket、WSS和gRPC协议。 |
配置变更 | 证书变更需要Reload进程,对长连接有损。非证书变更使用Lua实现热更新。Lua插件变更需要Reload进程。 | 采用OpenAPI机制变更配置,时效高于List-Watch机制。 |
认证鉴权 | 支持Basic Auth认证方式。支持oAuth协议。 | 支持TLS身份认证。 |
性能 | 性能依赖手动调优,需要进行系统参数调优和Nginx参数调优。需要配置合理的副本数和资源限制。更多信息,请参见[Nginx Ingress最佳实践] | 单实例支持100万QPS。单实例支持千万级最大连接。默认使用SSL硬件进行加速。 |
可观测能力 | 支持通过Access Log采集日志。支持通过Prometheus进行监控和告警配置。 | 支持通过Access Log采集日志(对接SLS)。支持使用Metrics输出监控指标(集成云监控)。支持报警配置(对接云监控)。 |
运维能力 | 自行维护组件。通过配置HPA进行扩缩容。需要主动配置规格进行调优。 | 全托管、免运维。自动弹性,免配置支持超大容量。处理能力随业务峰值自动伸缩。 |
安全 | 支持HTTPS协议。支持黑白名单功能。 | HTTPS(集成SSL)支持全链路HTTPS、SNI多证书、RSA、ECC双证、TLS 1.3协议和TLS算法套件选择。支持Waf防护(对接阿里云Web防火墙)。支持DDos防护(对接阿里云DDoS防护服务)。支持黑白名单功能。 |
服务治理 | 服务发现支持K8s。服务灰度支持金丝雀。服务高可用支持限流。 | 服务发现支持K8s。服务灰度支持金丝雀。服务高可用支持限流。 |
扩展性 | 使用Lua脚本。 | 使用AScript自研脚本。更多信息,请参见[可编程脚本AScript概述] |
云原生集成 | 集成Nginx Service Mesh。更多信息,请参见[Ingress概述]。自行运维组件,与阿里云ACK或ASK等容器服务结合使用。 | 与多种云产品结合,如Web应用防火墙(WAF)、函数计算(FC)、私网连接(PrivateLink)和云企业网转发路由器(TR)等。托管组件,与阿里云ACK或ASK等容器服务结合使用。 |
网友评论