天天看點

ELB Ingress網關助力雲原生應用輕松管理流量

本文分享自華為雲社群《ELB Ingress網關助力雲原生應用輕松管理流量-雲社群-華為雲》,作者:雲容器大未來。

背景

通常情況下,K8s叢集的容器網絡平面和外部網絡是隔離的,外部網絡無法直接通路到叢集内部的容器業務,如何為容器提供并管理統一的外部流量入口?社群提供的常見方式是使用Nodeport Service,Loadbalancer Service,Ingress等K8s資源對象來暴露叢集内部的容器原生應用。Service對象提供了四層負載均衡能力,Ingress對象則提供了面向應用層通路(HTTP/HTTPS等)的七層負載均衡能力。

而随着雲原生架構在企業内的普遍落地,容器作為雲原生微服務應用的載體,需要面對更多挑戰,如面對微服務的複雜組網,業務請求在雲服務之間轉發往往需要做源位址轉換而導緻流量分發損耗;遊戲類、電商搶購類等業務在短時間内會進行頻繁擴縮容,必須應對高并發的網絡流量;網關入口流量應對網際網路的安全攻擊,如灰産、異常流量,需提供流量安全防護能力;此外,支援更加複雜的路由規則配置、多種應用層協定(HTTP、HTTPS、GRPC等)、應用藍綠釋出、流量可觀測性等七層進階轉發能力也逐漸成為了雲原生應用的普遍訴求。

Ingress Nginx,Ingress Kong,Traefik等開源社群方案雖然提供了豐富的七層流量治理功能, 但對于關鍵生産業務上雲,企業在選擇Ingress方案時,除了考慮功能性,還需要充分權衡安全性、可維護性和可靠性等方面的需求,以找到最佳平衡點。專業的雲服務提供商提供托管的Ingress解決方案,能夠較好的應對這些挑戰。

華為雲CCE服務(雲容器引擎_CCE_搭建_部署_企業級雲容器_容器引擎-華為雲)提供了基于應用型負載均衡ELB(Elastic Load Balance)的全托管免運維的企業級 Ingress 流量治理,讓使用者輕松應對雲原生應用流量管理。

ELB Ingress 介紹

在K8s叢集中,容器網絡平面通常是獨立于叢集主機網絡的一個隔離的網絡平面,工作負載在滾動更新或者重新排程後容器的位址會有變化,這就帶來一個問題:如何實作某組Pod的服務發現,并提供固定的外部通路入口?Service和Ingress對象就是K8s中實作叢集内外應用統一通路入口的一種機制。

K8s社群對叢集外部的流量暴露提供了三種方式:Nodeport Service、Loadbalancer Service、Ingress,前兩者Service對象主要提供叢集四層流量入口,Ingres對象提供七層流量治理能力。兩者互相配合,共同實作K8s叢集應用的對外通路機制。如下圖一所示,用戶端通過Ingress管理的負載均衡器,通路Ingress申明的路由,由負載均衡器将流量經過後端Service導入至後端容器。

ELB Ingress網關助力雲原生應用輕松管理流量

圖一:Ingress示例

ELB Ingress是華為雲CCE服務提供的七層流量治理功能,基于社群标準Ingress API實作,提供高可用、高性能、高安全、多協定的全托管免運維負載均衡能力。同時具備彈性能力,在流量突發時支援快速擴充計算資源,支援千萬級并發連接配接,百萬級建立連接配接,是雲原生應用流量治理的理想選擇。

ELB Ingress工作原理

ELB Ingress部署于CCE叢集的master節點上,與ELB執行個體對接,可将Ingress申明的容器後端位址、轉發政策、路由等資訊配置至ELB執行個體,并且支援動态更新。

圖二是基于Nodeport中轉的ELB Ingress工作流圖,CCE Standard叢集使用該方案的原理如下:

  • 使用者為叢集建立Ingress資源,在Ingress中配置流量通路規則,如負載均衡器執行個體、URL路由、SSL證書等監聽資訊,以及通路的後端Service等,控制器通過标簽選擇器選中工作負載,将工作負載所在節點和Nodeport端口挂載至負載均衡器執行個體的後端;
  • Ingress Controller監聽到Ingress資源發生變化時,會根據其中定義的流量通路規則,在ELB側重新配置監聽器以及後端伺服器路由;
  • 使用者通過ELB通路應用程式,流量根據ELB中配置的轉發政策轉發到對應的Node節點,再經過Nodeport二次轉發通路到關聯的工作負載(Nodeport轉發機制參見k8s官方文檔說明)。
ELB Ingress網關助力雲原生應用輕松管理流量

圖二: Nodeport中轉的ELB Ingress流程圖

該方案中流量經過節點、IPTables/IPVS規則多次轉發,網絡性能存在損耗。在大流量場景下,網絡轉發效率、網絡連通速度的挑戰尤為突出。為此,我們推出了基于CCE Turbo叢集的網絡加速方案:容器直接使用VPC網絡實作直通容器的ELB Ingress,将原有的“容器網絡 + 虛拟機網絡“兩層模型簡化為一層。如圖三所示,叢集中的Pod IP直接從VPC中配置設定,支援北向ELB直通容器,外部流量可以不經過節點端口轉發直接通路叢集中的Pod,達到流量分發零損耗的效果。

ELB Ingress網關助力雲原生應用輕松管理流量

圖三:容器網絡直通的ELB Ingress流程圖

ELB Ingress流量治理核心優勢

ELB Ingress基于原生Kubernetes Ingress,通過聲明式API指定Ingress的路由、對接的後端服務,或者通過Annotation配置監聽側的進階選項,由系統保證最終一緻性。ELB Ingress為開發者和運維人員提供了極大的開發靈活性和維護便利性,其核心優勢包括:

  • 高吞吐、高可用、高彈性

ELB Ingress搭配獨享型ELB執行個體,最高支援2千萬并發連接配接;通過完善的健康檢查機制,保障業務實時線上,支援多可用區的同城雙活容災,無縫實時切換;彈性規格ELB執行個體支援根據流量負載自動彈性擴縮執行個體規格,适用于業務用量波動較大的場景,例如遊戲、視訊等行業,能滿足瞬時流量同時成本最小化。

  • 高安全性

ELB Ingress提供了端到端的全鍊路安全政策,如下圖四是外部流量經過ELB通路CCE Turbo叢集的簡單示例:在通路端可配置接入WAF引擎檢測并攔截惡意攻擊流量,而正常流量轉發至後端雲伺服器。通過Ingress的Annotation配置可輕松為ELB執行個體配置自定義安全政策,例如設定黑白名單,雙向認證等。從ELB轉發至後端也支援HTTPS加密信道,進一步增強整體安全性。

ELB Ingress網關助力雲原生應用輕松管理流量

圖四: 外部流量通路CCE Turbo安全示例

  • 可移植性

完全相容社群Ingress語義,從開源Nginx Ingress等方案遷移過來僅需改造annotation即可輕松适配。

  • 可觀測性

雲監控可以按時間軸檢視ELB的網絡流量和通路日志,動态分析并告警潛在風險;雲審計可以實時監控ELB資源更新日志,針對風險動作實時告警,動态監控雲上資源安全;Ingress Controller也支援豐富的普羅監控名額,如接口調用時延,reload次數等。

  • 免維護性

ELB Ingress元件運作在叢集的Master節點,使用者無需關注運維問題,元件在叢集更新時會自動更新,且對業務無感。

ELB Ingress流量治理核心功能

在社群基礎功能之上,華為雲ELB Ingress在負載均衡、路由規則、流量控制、安全性和可觀測性等方面都有較大增強,滿足了更複雜的生産環境需求。下面介紹ELB Ingress流量治理核心功能:

  • 灰階釋出

灰階釋出是業界常用的版本更新平滑過渡的一種方式。在版本更新時,先讓部分使用者使用新版本,其他使用者繼續使用老版本。待新版本穩定後,再逐漸擴大新版本的使用範圍,直到所有使用者流量都遷移到新版本上。這樣可以最大限度地控制新版本釋出帶來的業務風險,降低故障影響範圍,同時支援快速復原。

我們提供了基于Header/Cookie/Weight的灰階釋出政策,前兩種政策通過将使用者分成若幹組,在不同的時間段内逐漸引入新版本,最終擴大新版本的影響範圍;基于Weight的政策則是通過控制新版本的權重,在不同時間段内逐漸增加新版本的流量比例,直到完全替代舊版本。

ELB Ingress網關助力雲原生應用輕松管理流量
  • 進階轉發政策

随着雲原生應用組網的日益複雜,傳統的基于路由轉發的七層流量治理已經難以滿足需求。我們提供的進階轉發政策可以很好地解決傳統方案面臨的局限性:

  • 基于請求頭的負載均衡:根據用戶端請求頭的不同值,将請求配置設定到不同的後端伺服器。
  • HTTP重定向到HTTPS:系統自動将HTTP監聽器流量轉發至HTTPS監聽,提升網站安全性,防止内容篡改等。
  • URL重定向和重寫:支援将URL永久或臨時映射到另一個URL。同時,支援正規表達式比對和實作不同路徑的重寫規則。
  • 慢啟動

在應用滾動更新時,ELB Ingress會自動更新負載均衡器後端,并且根據後端容器執行個體副本數自動設定後端權重。但是,在後端健康檢查通過後的上線過程中,可能面臨流量突增,導緻後端容器的CPU或記憶體資源瞬間高負荷,進而影響業務穩定性。在開啟慢啟動模式後,系統可以在指定時間内,逐漸将流量導入到目标容器後端。這樣可以緩解業務容器突增的流量壓力,保護系統免受過度負載的影響,實作優雅過渡。

小結

的ELB Ingress基于華為雲應用型負載均衡ELB(Elastic Load Balance)提供強大的Ingress流量管理能力,相容Nginx Ingress,具備處理複雜業務路由和證書自動發現的能力,支援HTTP、HTTPS和GRPC等協定,滿足在雲原生應用場景下對超強彈性和大規模七層流量處理能力的需求。

後續我們還将釋出系列文章,詳細介紹基于ELB Ingress的流量管理最佳實踐,歡迎各位讀者繼續關注。

相關連結:

  • 華為雲雲容器引擎CCE服務路由概述:https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html
  • Ingress官方文檔:https://kubernetes.io/docs/concepts/services-networking/ingress/

關注#華為雲開發者聯盟#點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲

繼續閱讀