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