【云駐共創】華為云云原生之Kubernetes網絡架構原理深度剖析(下)
前言
上一篇文章大家了解了kubernetes容器網絡和Service的基本模型
Kubernetes基本網絡模型剖析
Service基本網絡模型剖析
華為云CCE Yantse網絡方案和架構剖析
本文主要介紹
Ingress Controller機制剖析
CNI接口機制與插件實現原理
云原生網絡最佳實踐與典型問題案例
一、Ingress Controller機制剖析
1.Ingress API接口模型與演進
Ingress為K8S集群內服務提供聚合統一的訪問入口。除了提供豐富的七層(HTTP)路由功能外,Ingress實現中也提供了豐富服務治理能力,但不同實現(IngressClass)在部署方式和功能特性上存在差異。
SSL
認證鑒權
IP白名單
限流
日志與監控
響應緩存
Web應用防火墻
GZIP壓縮
靜態內容服務
2.Ingress Controller架構剖析
二、CNI接口機制與插件實現原理
1.CNI接口與插件能力模型
1.JSON-based配置
2.支持內置標準配置關鍵字和插件擴展關鍵字
3.通過標準輸入stdin向插件二進制傳入配置
4.配置可以保存在磁盤也可以由運行時生成
CNI配置樣例:
{ "name": "mynet", "type":"bridge" "bridge":"mynete", "isDefaultGateway":true, "forceAddress":false, "ipMasq":true, "hairpinMode":true, "ipam":{ "type":"host-local", "subnet":"10.10.0.0/16" } }
相關網址:
SPEC:https://github.com/containernetworking/cni
Pluains:https://github.com/containernetworking/plugins
2.CNI在K8S中是如何工作的
CNI調用過程:
1.CNI支持的接口命令有:
ADD,DEL,CHECK and VERSION
2.插件名即是可執行文件名
3.運行時根據網絡操作發起相應的插件進程命令
4.通過標準輸入傳入JSON格式的配置
5.指定容器的特殊配置也從標準輸入stdin傳入
6.插件的返回結果從標準輸出傳回stdout
7.多種插件和能力的鏈式調用,失敗即終止,成功則繼續,最終由插件結果返回給運行時
3.CNI高級特性舉例
CNI支持多網口、多網絡平面方案:
https://github.com/k8snetworkplumbingwg/multus-cni
https://github.com/cni-genie/CNl-Genie
三、云原生網絡最佳實踐
1.IDC與CEE集群共享DNS方案
某企業APP微服務:
管理后臺部署在華為云CCE集群
內容審核服務部署在企業原有的IDC
使用華為云圖像識別服務
CCE所在的VPC和原有的IDC之間通過專線進行連接的圖示如下:
2.微服務容器實例訪問云數據庫等中間件的網絡隔離方案
CCETurbo容器安全組:
按訪問控制要求為訪問端和被訪問端創建相應的安全組及關聯規則
將相應的安全組關聯到被訪問服務的實例網口,如:SG-RDS
創建安全組CRD對象,通過選擇POD標簽,將安全組ID關聯到特定的微服務工作負載的POD網口
四、云原生網絡典型問題案例
1.源地址保持的"鍋"?
容器服務通過ELB訪問集群內的其他服務時,出現時延陡增異常
2.時延去哪兒了?
某客戶從虛機遷移到CCE容器集群:
業務容器化部署,通過LoadBalance服務由ELB對外暴露
壓測工具測試結果顯示,同等壓力下平均響應23ms,比原虛擬機的部署性能下降5ms,與LB的監控數據一致
業務監控顯示,業務的平均響應時延15ms,其中8ms是由于網絡轉發時延造成
總結
1.ingress的理解
ingress相當于一個7層的負載均衡器,是k8s對反向代理的一個抽象。可以理解成在Ingress里建立一個個映射規則,ingress Controller通過監聽Ingress這個api對象里的配置規則并轉化成Nginx的配置(kubernetes聲明式API和控制循環),然后對外部提供服務。ingress包括:ingress controller和ingress resources
ingress controller:核心是一個deployment,實現方式有很多,比如nginx,Contour,Haproxy,trafik,Istio,需要編寫的yaml有:Deployment,Service,ConfigMap,ServiceAccount(Auth),其中service的類型可以是NodePort或者LoadBalancer。
ingress resources:這個就是一個類型為Ingress的k8s api對象,這部分是面向開發人員。
2.CNI的理解
CNI的全稱是Container Network Interface,Google和CoreOS聯合定制的網絡標準,這個標準基于rkt實現多容器通信的網絡模型。
生產中的網絡環境可能是多種多樣的,有可能是二層連通的,也可能是用公有云的環境,所以各個廠商的網絡解決方案百花爭鳴,這些解決方案也不能全都集成在kubelet的代碼中,所以CNI就是能讓各個網絡廠商對接進來的接口。
3.結尾
本文介紹的內容主要有:Ingress Controller機制剖析、CNI接口機制與插件實現原理、云原生網絡最佳實踐、云原生網絡典型問題案例。通過以上講解相信大家對Kubernetes網絡架構理解更深了,Kubernetes網絡架構原理深度剖析內容就到此完結,謝謝光看。
華為云官網鏈接:
https://support.huaweicloud.com/usermanual-cce/cce_01_0249.html
https://support.huaweicloud.com/usermanual-cce/cce_01_0094.html
Kubernetes官方文檔:
Ingress:https://kubernetes.io/docs/concepts/services-networking/ingress/
本文整理自華為云社區【內容共創】活動第13期。
查看活動詳情:https://bbs.huaweicloud.com/blogs/330939
相關任務詳情:任務24.華為云云原生鉆石課程07:Kubernetes網絡架構原理深度剖析(下)
Kubernetes 云原生 容器 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。