边缘集群Ingress概述

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组件

专线,不使用流量拓扑。

节点池部署

image
  • 在云端节点池和边缘节点池分别部署Ingress Controller。

  • 云端节点池的Ingress Controller通过LoadBalancer类型的Service对外暴露服务,使用阿里云CLB地址作为端点。

  • 边缘节点池的Ingress Controller通过NodePort类型的Service对外暴露服务,使用节点池内任意节点的IP地址作为访问端点。

  • 您需要配置Service流量拓扑,来确保外部请求通过Ingress Controller转发到后端Service时,流量仅限于转发到同一节点池内的后端Pod。具体操作,请参见节点池服务拓扑管理

云端部署

image
  • 只需在云端节点池部署Ingress Controller。

  • 确保云端节点池和边缘节点池通过专线接入,实现内网互通,从而保证主机网络与容器网络的互联互通。

  • 云端节点池的Ingress Controller通过LoadBalancer类型的Service对外暴露服务,使用阿里云CLB地址作为端点。

  • 外部请求通过Ingress Controller转发到Service的后端Pod,不使用流量拓扑。