掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:架構(gòu)驛站 2023-09-02 21:27:09
云計算
云原生 今天我們來聊一下云原生生態(tài)核心技術(shù)之流量管理—— Kubernetes Ingress Controller。

今天我們來聊一下云原生生態(tài)核心技術(shù)之流量管理—— Kubernetes Ingress Controller。
在云原生生態(tài)中,通常來講,入口控制器( Ingress Controller )是 Kubernetes 中的一個關(guān)鍵組件,用于管理入口資源對象。
Ingress 資源對象用于定義來自外網(wǎng)的 HTTP 和 HTTPS 規(guī)則,以控制進入集群內(nèi)服務(wù)的流量。而 Ingress Controller 則是真正實現(xiàn) Ingress 規(guī)則的組件。
從更為準(zhǔn)確的角度而言,入口控制器( Ingress Controller )管理 L4 和 L7 層請求的南北向流量,也就是我們所說的從集群外部進入或離開集群的流程。它通過解析 Ingress資源對象,配置負(fù)載調(diào)度規(guī)則,將外部請求按照域名、路徑等規(guī)則轉(zhuǎn)發(fā)到集群內(nèi)后端服務(wù) Pod 上。
而集群內(nèi)服務(wù)之間的東西向流量,則由服務(wù)發(fā)現(xiàn)機制進行管理。例如 Pod 根據(jù)服務(wù)名稱查詢對方 Pod IP 進行通信。
我們可以從更廣泛的視角來理解這兩種流量:
在整個網(wǎng)絡(luò)拓?fù)浼軜?gòu)中,兩者各司其職,形成了完整流量治理體系。入口控制器( Ingress Controller )統(tǒng)一入口,服務(wù)發(fā)現(xiàn)則實現(xiàn)內(nèi)部流量的松耦合通訊。這樣既保證了外部訪問安全,也實現(xiàn)了集群內(nèi)各服務(wù)的高可用調(diào)用。這對于 Kubernetes 原生應(yīng)用架構(gòu)調(diào)優(yōu)和流量管控都大有利處。
從更為專業(yè)的角度進行補充:Ingress 本身只是一個 API 對象,定義了集群外部流量如何進入集群內(nèi)各個服務(wù)的路由規(guī)則,但是它本身無法直接實現(xiàn)這些路由。
這里需要一個控制平面組件-入口控制器( Ingress Controller ),它監(jiān)聽 Ingress 資源對象的變更,并根據(jù) Ingress 規(guī)則進行配置。一般來說,入口控制器實現(xiàn)了反向代理功能,例如 Nginx Ingress 或 Traefik 等。
入口控制器( Ingress Controller )通過監(jiān)聽節(jié)點的某個端口,接收集群外部流量。它將根據(jù) Ingress 定義的規(guī)則,如域名、URL路徑、主機名等進行匹配,然后利用負(fù)載均衡技術(shù)將流量轉(zhuǎn)發(fā)至后端對應(yīng)的 Pod 服務(wù)實例上。
同時,入口控制器( Ingress Controller )也可以提供更豐富的流量管理能力,諸如基于IP或用戶名密碼的訪問控制;超時重試與隔離;跨區(qū)域流量管理等。它通過對外提供統(tǒng)一入口,為內(nèi)部服務(wù)提供安全可靠的對外訪問表現(xiàn)層。
通常,在容器云平臺,尤其是私有云環(huán)境下,Kubernetes Cluster 內(nèi)各個 Pod 僅能互相訪問,但外部網(wǎng)絡(luò)無法直接訪問到集群內(nèi)的 Pod,這樣保證了集群的安全性。
當(dāng)需要對外提供服務(wù)時,我們可以創(chuàng)建 Ingress 資源對象來定義路由規(guī)則,比如基于域名或 URL 路徑將流量轉(zhuǎn)發(fā)到后端不同服務(wù)上。
但是 Ingress 資源本身只是一個聲明,無法直接實現(xiàn)流量轉(zhuǎn)發(fā)這一功能。此時需要部署一個控制平面組件 入口控制器( Ingress Controller ) Pod(如 Nginx 或者 Traefik ),它會檢測 Ingress 對象的變更,并根據(jù) Ingress 規(guī)則配置負(fù)載均衡設(shè)備或自身作反向代理。
入口控制器( Ingress Controller )以 Pod 形式運行在集群內(nèi),從集群外部流入的請求通過 入口控制器( Ingress Controller ) 入口被轉(zhuǎn)發(fā)到后端服務(wù)上。
同時,入口控制器( Ingress Controller ) 不僅可以實現(xiàn)單純的循環(huán)請求分配,也支持根據(jù)目標(biāo) URL 或域名提供虛擬主機、HTTPS、認(rèn)證等附加能力,充分利用其作為入口的功能。
因此,只有通過入口控制器( Ingress Controller ),才能真正意義上實現(xiàn) Ingress 定義的復(fù)雜流量管理規(guī)則,同時也通過統(tǒng)一入口對外提供安全可靠的服務(wù)訪問能力,這就是 Ingress 實現(xiàn)外部訪問的標(biāo)準(zhǔn)解決方案。
通常而言,入口控制器( Ingress Controller )的一般工作原理,注涉及如下,具體:
通常而言,入口控制器(Ingress Controller)是一個在 Kubernetes Cluster 中運行的組件,用于管理和控制流入集群的網(wǎng)絡(luò)流量。其主要解決了以下幾個關(guān)鍵問題:

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流