在ACK Edge集群中,Ingress对集群服务(Service)中外部可访问的API对象进行管理,提供七层负载均衡能力。本文介绍Ingress基本概念、工作原理和使用说明。
基本概念
在ACK Edge集群中,Ingress作为服务对外暴露的访问入口,承载了集群内几乎所有的访问流量。Ingress是Kubernetes中的一个资源对象,用于管理集群外部对于内部服务的访问方式。通过配置Ingress资源,可以定义不同的转发规则,从而实现根据不同规则访问集群内部各Service对应的后端Pod。关于Ingress原理详情,请参见Ingress概述。
Ingress资源仅支持配置HTTP流量的规则,无法配置一些高级特性,例如负载均衡的算法、Sessions Affinity等,这些高级特性都需要在Ingress Controller中进行配置。
如何在ACK Edge集群部署Ingress Controller
ACK Edge集群在ACK集群Pro版的基础上扩展了边缘节点池功能,用于接入边缘节点和IDC机器。有关节点池的详细信息,请参见节点池概述。ACK Edge集群分为以下两个部分。
云端节点池:包含位于集群VPC内的阿里云ECS计算设备等资源。
边缘节点池:集群中可以存在多个边缘节点池,这些节点池主要用于接入边缘节点和IDC机器。
Ingress Controller作为外部请求流量的入口,将对应的HTTP/HTTPS请求转发到后端Service关联的Pod中。您可以通过以下几种方法来部署Ingress Controller,具体操作如下:
部署方式 | 特点 | 云边网络类型/流量拓扑 |
节点池部署 | 在集群中每个有需要的节点池内部署一套Ingress,仅支持Nginx Ingress类型。具体操作,请参见部署Nginx Ingress Controller。 |
|
云端部署 | 仅在云端节点池中部署一套Ingress,支持Nginx Ingress和ALB Ingress两种类型。具体操作,请参见部署Nginx Ingress Controller、管理ALB Ingress Controller组件。 | 专线,不使用流量拓扑。 |
节点池部署
在云端节点池和边缘节点池分别部署Ingress Controller。
云端节点池的Ingress Controller通过LoadBalancer类型的Service对外暴露服务,使用阿里云CLB地址作为端点。
边缘节点池的Ingress Controller通过NodePort类型的Service对外暴露服务,使用节点池内任意节点的IP地址作为访问端点。
您需要配置Service流量拓扑,来确保外部请求通过Ingress Controller转发到后端Service时,流量仅限于转发到同一节点池内的后端Pod。具体操作,请参见节点池服务拓扑管理。
云端部署
只需在云端节点池部署Ingress Controller。
确保云端节点池和边缘节点池通过专线接入,实现内网互通,从而保证主机网络与容器网络的互联互通。
云端节点池的Ingress Controller通过LoadBalancer类型的Service对外暴露服务,使用阿里云CLB地址作为端点。
外部请求通过Ingress Controller转发到Service的后端Pod,不使用流量拓扑。