本文介紹Ingress基本概念、Ingress Controller工作原理和Nginx Ingress Controller的使用說明。
Ingress基本概念
在Kubernetes叢集中,Ingress作為叢集內服務對外暴露的訪問存取點,幾乎承載著叢集內服務訪問的所有流量。Ingress是Kubernetes中的一個資來源物件,用來管理叢集外部存取叢集內部服務的方式。您可以通過Ingress資源來配置不同的轉寄規則,從而實現根據不同的規則設定訪問叢集內不同的Service所對應的後端Pod。
Ingress Controller工作原理
Ingress Controller用於解析Ingress的轉寄規則。Ingress Controller收到請求,匹配Ingress轉寄規則轉寄到後端Service所對應的Pod,由Pod處理請求。Kubernetes中Service、Ingress與Ingress Controller有著以下關係:
Service是後端真實服務的抽象,一個Service可以代表多個相同的後端服務。
Ingress是反向 Proxy規則,用來規定HTTP、HTTPS請求應該被轉寄到哪個Service所對應的Pod上。例如根據請求中不同的Host和URL路徑,讓請求落到不同Service所對應的Pod上。
Ingress Controller是一個反向 Proxy程式,負責解析Ingress的反向 Proxy規則。如果Ingress有增刪改的變動,Ingress Controller會及時更新自己相應的轉寄規則,當Ingress Controller收到請求後就會根據這些規則將請求轉寄到對應Service的Pod上。
Ingress Controller通過API Server擷取Ingress資源的變化,動態地產生Load Balancer所需的設定檔,然後依次產生新的路由轉寄規則。
Nginx Ingress Controller使用說明
當前Kubernetes官方維護的是Nginx Ingress Controller,ACK Serverless基於社區版的Nginx Ingress Controller進行了最佳化。當在建立ACK Serverless叢集時,您選擇安裝的Nginx Ingress Controller組件即為ACK Serverless定製版的Nginx Ingress Controller組件。