在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,不使用流量拓撲。