




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、構(gòu)建高性能云原生容器網(wǎng)絡(luò)技術(shù)創(chuàng)新,變革未來(lái)CONTENT目錄Kubernetes容器網(wǎng)絡(luò)概覽構(gòu)建高性能云原生的CNI網(wǎng)絡(luò)增強(qiáng)網(wǎng)絡(luò)擴(kuò)展性和性能目錄Kubernetes容器網(wǎng)絡(luò)概述Pod 網(wǎng) 絡(luò) 連 通 性 (CNI) Kubernetes 負(fù)載均衡(Service) Kubernetes 服務(wù)發(fā)現(xiàn)(Coredns)Kubernetes容器網(wǎng)絡(luò)概述Pod網(wǎng)絡(luò)連通性(CNI)Pod有自己獨(dú)立的網(wǎng)絡(luò)空間和IP地址不同Pod的應(yīng)用可以監(jiān)聽(tīng)同樣的端口而不沖突Pod可以通過(guò)各自的IP地址互相訪問(wèn)集群中Pod可以通過(guò)它獨(dú)立的IP地址訪問(wèn)其他網(wǎng)絡(luò)Pod和Pod的聯(lián)通Pod與Node的聯(lián)通Pod與外部網(wǎng)絡(luò)連通具體
2、的地址分配和網(wǎng)絡(luò)打通由網(wǎng)絡(luò)插件(CNI)來(lái)負(fù)責(zé)Nginx1 172.16.0.1Tomcat1 172.16.0.2/24Redis1 172.16.1.1Mysql1 172.16.1.2/24Nginx2 172.16.2.1Redis2 172.16.2.2/24k8s node 100k8s node 201k8s node 302k8s-masterKubernetes容器網(wǎng)絡(luò)概述Pod網(wǎng)絡(luò)連通性(CNI)Container Network Interface,容器網(wǎng)絡(luò)的API接口CNI插件:一系列實(shí)現(xiàn)了CNI API接口的網(wǎng)絡(luò)插件配置Pod網(wǎng)絡(luò)空間打通Pod之間網(wǎng)絡(luò)連通Kubele
3、t通過(guò)這個(gè)標(biāo)準(zhǔn)的API調(diào)用不同的網(wǎng)絡(luò)插件實(shí)現(xiàn)配置網(wǎng)絡(luò)Nginx1 172.16.0.1k8s-masterNginx2 172.16.0.2worker1apiserverkubeleteth0eth0CNI1.創(chuàng)建Pod2.Watch到Pod3. 創(chuàng)建pod沙箱4. CNI ADD5.配置容器網(wǎng)絡(luò)Redis1 172.16.1.1worker2eth0kubeletCNIKubernetes容器網(wǎng)絡(luò)概述Nginx1 172.16.0.1Nginx2 172.16.0.2worker1Redis1 172.16.1.1worker2eth0bridgePod網(wǎng)絡(luò)連通性(CNI)容器的地址跟節(jié)點(diǎn)
4、不在一個(gè)平面,如何在節(jié)點(diǎn)之上實(shí)現(xiàn)容器網(wǎng)絡(luò)通信Tomcat1 172.16.1.2eth0eth0bridgeeth0kubeletCNIkubeletCNI封包方式容器之間的通信報(bào)文封裝成宿主機(jī)之間通信的報(bào)文vtepeth0vtepeth0隧道0001Kubernetes容器網(wǎng)絡(luò)概述Nginx1 172.16.0.1Nginx2 172.16.0.2worker1Redis1 172.16.1.1worker2eth0bridgePod網(wǎng)絡(luò)連通性(CNI)容器的地址跟節(jié)點(diǎn)不在一個(gè)平面,如何在節(jié)點(diǎn)之上實(shí)現(xiàn)容器網(wǎng)絡(luò)通信Tomcat1 172.16.1.2eth0eth0bridgeeth0kube
5、letCNIkubeletCNI路由方式容器之間的通信報(bào)文由路由表轉(zhuǎn)發(fā)到對(duì)應(yīng)的節(jié)點(diǎn)上eth0eth0路由:/24 - worker1/24 - worker20001Kubernetes容器網(wǎng)絡(luò)概述Kubernetes網(wǎng)絡(luò)負(fù)載均衡 ServiceNginx Service 00Nginx1 172.16.1.1Nginx2 172.16.1.2kubeletCNIkubeproxy$ cat nginx-svc.yaml apiVersion: v1kind: Service metadata:name: nginx spec:selector:app: nginx ports:- proto
6、col: TCPport: 80$ kubectl get service nginx CLUSTER-IP PORT(S) 00 80/TCP$ kubectl get endpoints nginx NAMEENDPOINTSnginx:80,:80Pod生命周期短暫,IP地址隨時(shí)變化,需要固定的訪問(wèn)方式Deployment等的一組Pod組需要統(tǒng)一訪問(wèn)入口和做負(fù)載均衡worker1Kubernetes容器網(wǎng)絡(luò)概述Kubernetes網(wǎng)絡(luò)負(fù)載均衡 Service - LoadBalancerNginx ServiceType: LoadBalancer 11Nginx1 172.16.1.1
7、$ cat nginx-svc.yaml apiVersion: v1kind: Service metadata: name: nginx spec: selector:app: nginx ports:- protocol: TCPport: 80type: LoadBalancer$ kubectl get service nginxEXTERNAL-IPPORT(S)11 80:30867/TCP$ kubectl get endpoints nginxNAMEnginxENDPOINTS:80,:80外部也需要固定的訪問(wèn)Pod的入口LoadBalancer類型的Service創(chuàng)建LB
8、服務(wù)來(lái)暴露集群服務(wù)worker1Nginx1 172.16.1.2worker2云LB:30876:30876Kubernetes容器網(wǎng)絡(luò)概述Kubernetes網(wǎng)絡(luò)服務(wù)發(fā)現(xiàn)雖然Service固定了IP訪問(wèn)方式,但Service的IP在不同的namespace或者集群中是不同的集群的Coredns會(huì)將Service名自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的Service的IP地址,來(lái)實(shí)現(xiàn)不同部署環(huán)境中同樣的訪問(wèn)入口Nginx Service 00Nginx1 172.16.1.1Nginx2 172.16.1.2kubeletCNIkubeproxyworker1Client1172.16.1.3Coredns1.
9、解析nginx域名nginx-002. 請(qǐng)求Service IP3. 轉(zhuǎn)發(fā)到PodCONTENT目錄Kubernetes容器網(wǎng)絡(luò)概覽構(gòu)建高性能云原生的CNI網(wǎng)絡(luò)增強(qiáng)網(wǎng)絡(luò)擴(kuò)展性和性能目錄高性能云原生的容器網(wǎng)絡(luò)Nginx1 192.168.1.102Nginx2 192.168.1.103eth0eth0Redis1 192.168.1.104什么是云原生容器網(wǎng)絡(luò)?云上IAAS層網(wǎng)絡(luò)虛擬化,在容器中再做一層網(wǎng)絡(luò)虛擬化性能損失大云原生容器網(wǎng)絡(luò)直接使用云上原生云資源配置容器網(wǎng)絡(luò)容器和節(jié)點(diǎn)同等網(wǎng)絡(luò)平面,同等網(wǎng)絡(luò)地位POD網(wǎng)絡(luò)可以和云產(chǎn)品無(wú)縫整合不需要封包和路由,網(wǎng)絡(luò)性能和虛機(jī)幾乎一致worker1wor
10、ker2eth0Tomcat1 192.168.1.105eth0kubeletCNIkubeletCNIeth0eth00001云上IAAS層網(wǎng)絡(luò)高性能云原生的容器網(wǎng)絡(luò)Nginx1k8s-masterworker1apiserverkubeleteth0Terway CNI1.創(chuàng)建Pod2.Watch到Pod3. 創(chuàng)建pod沙箱4. CNI ADD7. 配置Pod網(wǎng)絡(luò)Redis1worker2eth0kubeletTerway CNI云上IAAS層網(wǎng)絡(luò)網(wǎng)絡(luò)OpenAPI5. 調(diào)用OpenAPI配置網(wǎng)絡(luò)6. 分配IAAS虛擬化網(wǎng)絡(luò)資源云原生容器網(wǎng)絡(luò)原理在CNI調(diào)用中調(diào)用云網(wǎng)絡(luò)OpenAPI完成
11、網(wǎng)絡(luò)資源分配網(wǎng)絡(luò)資源一般是彈性網(wǎng)卡,彈性網(wǎng)卡輔助IP等,綁定到Pod所在的節(jié)點(diǎn)上網(wǎng)絡(luò)資源分配出來(lái)之后CNI插件在宿主機(jī)中將資源配置到Pod的沙箱中下圖以阿里云上的Terway CNI插件為例:eth0eth0高性能云原生的容器網(wǎng)絡(luò)使用云原生網(wǎng)絡(luò)資源的優(yōu)勢(shì)Pod和虛擬機(jī)同一層網(wǎng)絡(luò),便于業(yè)務(wù)云原生化遷移不依賴封包或者路由表,分配給Pod的網(wǎng)絡(luò)設(shè)備本身可以用來(lái)通信集群節(jié)點(diǎn)規(guī)模不受路由表或者封包的FDB轉(zhuǎn)發(fā)表等Quota限制不需要額外為Pod規(guī)劃Overlay的網(wǎng)段多個(gè)集群Pod之間只要安全組放開(kāi)就可以互相通信可以直接把Pod掛到LoadBalancer后端,無(wú)需節(jié)點(diǎn)上端口再做一層轉(zhuǎn)發(fā)NAT網(wǎng)關(guān)可以對(duì)
12、Pod做SNAT,無(wú)需節(jié)點(diǎn)上對(duì)容器網(wǎng)段做SNATPod訪問(wèn)VPC內(nèi)資源,所帶的源IP都是PodIP,便于審計(jì)Pod訪問(wèn)外部網(wǎng)絡(luò)不依賴conntrack SNAT,失敗率降低高性能云原生的容器網(wǎng)絡(luò)Terway CNIVSwitchVPCKubeleteth0PodPodeth0eth0VSwitcheni1eni2OpenAPIVSwitchTerway CNIPodKubeleteth0eni1Podeth0eth0如何利用云原生資源構(gòu)建容器網(wǎng)絡(luò)IAAS層網(wǎng)絡(luò)資源(以阿里云為例):彈性網(wǎng)卡(ENI)IAAS層虛擬化出來(lái)的虛擬網(wǎng)卡,可動(dòng)態(tài)分配和綁定到虛擬機(jī)上 一般能綁定數(shù)量有限,受限于PCI-E
13、的限制彈性網(wǎng)卡輔助IP彈性網(wǎng)卡上通常可以綁定多個(gè)VPC的IP地址,為輔助IP一個(gè)彈性網(wǎng)卡可以綁定數(shù)十個(gè)輔助IP地址,限制較小利用彈性網(wǎng)卡或者彈性網(wǎng)卡輔助IP分配給Pod來(lái)實(shí)現(xiàn)云原生容器網(wǎng)絡(luò)NodeNode高性能云原生的容器網(wǎng)絡(luò)如何利用云原生資源構(gòu)建容器網(wǎng)絡(luò) -網(wǎng)絡(luò)資源管理容器的啟動(dòng)速度是秒級(jí)的, 而IAAS層操作和調(diào)用一般在10s的級(jí)別Terway通過(guò)內(nèi)置資源池來(lái)緩沖資源加速啟動(dòng):資源池中記錄分配的正在使用和空閑的資源Pod釋放后資源會(huì)保留在資源池中供下次快速啟動(dòng)資源池有最低水位和最高水位空閑資源低于最低水位調(diào)用API補(bǔ)充資源空閑資源高于最高水位調(diào)用API釋放資源Aliyun OpenAPI高
14、性能云原生的容器網(wǎng)絡(luò)如何利用云原生資源構(gòu)建容器網(wǎng)絡(luò) - 網(wǎng)絡(luò)資源管理容器擴(kuò)縮容操作頻繁,云產(chǎn)品OpenAPI通常有嚴(yán)格的調(diào)用限流Terway通過(guò)緩沖池,小于水位自動(dòng)補(bǔ)充,來(lái)預(yù)熱資源減緩峰值A(chǔ)PI調(diào)用對(duì)并行的Pod網(wǎng)絡(luò)配置調(diào)用批量申請(qǐng)資源Terway Resource ManagerCNI backlog queueKubeletAliyunOpenAPICNICNICNICNI聚合接近的調(diào)用 批量申請(qǐng)資源N Pod如何選擇Pod要用的虛擬交換機(jī),保證IP充裕如何平衡每個(gè)節(jié)點(diǎn)上的網(wǎng)卡的隊(duì)列和中斷數(shù),保證爭(zhēng)搶最少以及更多的資源管理器設(shè)計(jì)可參考Terway文檔或代碼/AliyunContainerS
15、ervice/terway高性能云原生的容器網(wǎng)絡(luò)如何利用云原生資源構(gòu)建容器網(wǎng)絡(luò) - 網(wǎng)絡(luò)如何打通masterAPIServerNodeTerway CNIPodVSwitchVPCKubeleteth0eth0Podeth0VSwitcheni1eni2OpenAPIPod獨(dú)占彈性網(wǎng)卡模式通過(guò)Terway資源管理將彈性網(wǎng)卡綁定Pod所在NodeTerway CNI將網(wǎng)卡直接移入到Pod網(wǎng)絡(luò)空間Terway CNI為其網(wǎng)卡配置IP和路由等網(wǎng)絡(luò)配置Pod網(wǎng)絡(luò)完全不經(jīng)過(guò)宿主機(jī)網(wǎng)絡(luò)棧性能和ECS機(jī)器一致,無(wú)損耗Pod中為彈性網(wǎng)卡,可以使用DPDK等加速應(yīng)用高性能云原生的容器網(wǎng)絡(luò)如何利用云原生資源構(gòu)建容
16、器網(wǎng)絡(luò) - 網(wǎng)絡(luò)如何打通Pod共享彈性網(wǎng)卡模式Terway 資源管理器根據(jù)申請(qǐng)的IP數(shù)量和現(xiàn)有ENI上IP來(lái)判斷申請(qǐng)ENI還是輔助IP地址Terway CNI在ENI上創(chuàng)建IPVLAN子接口將IPVLAN子接口放入到Pod網(wǎng)絡(luò)空間配置Pod網(wǎng)絡(luò)空間的IP和路由信息IPVLAN網(wǎng)絡(luò)僅部分經(jīng)過(guò)網(wǎng)絡(luò)棧,不走iptables、路由表,損耗極低一個(gè)彈性網(wǎng)卡一般支持1020個(gè)輔助IP,不擔(dān) 心部署密度masterAPIServerNodeTerway CNIPodVSwitchVPCKubeleteth0eth0Podeth0VSwitcheni1eni2OpenAPIPodeth0IPVLANIPVLA
17、N高性能云原生的容器網(wǎng)絡(luò)如何利用云原生資源構(gòu)建容器網(wǎng)絡(luò) 性能對(duì)比CONTENT目錄Kubernetes容器網(wǎng)絡(luò)概覽構(gòu)建高性能云原生的CNI網(wǎng)絡(luò)增強(qiáng)網(wǎng)絡(luò)擴(kuò)展性和性能目錄增強(qiáng)網(wǎng)絡(luò)的擴(kuò)展性和性能Kubernetes Service性能和擴(kuò)展性問(wèn)題默認(rèn)采用kube-proxy的實(shí)現(xiàn)在大規(guī)模中表現(xiàn)不佳PREROUTING / OUTPUTany / any = KUBE-SERVICES數(shù)量:1KUBE-SERVICESany / VIP:PORT = KUBE-SVC-XXX數(shù)量:service數(shù)量KUBE-SVC-XXXany / any proba 33% = KUBE-SEP-AAA any /
18、 any proba 50% = KUBE-SEP-BBB any / any = KUBE-SEP-CCC數(shù)量:endpoint(pod)數(shù)量KUBE-SEP-AAAany / any = DNAT endpoint IP:Port數(shù)量:1iptables鏈路長(zhǎng),導(dǎo)致網(wǎng)絡(luò)延時(shí)增加,就算是ipvs模式也依賴了iptables的規(guī)則擴(kuò)展性差iptables規(guī)則同步是全量刷的,Service和Pod數(shù)量多了,一次規(guī)則同步都得接近1sService和Pod數(shù)量多了之后數(shù)據(jù)鏈路性能大幅降低增強(qiáng)網(wǎng)絡(luò)的擴(kuò)展性和性能NetworkPolicy性能和擴(kuò)展性問(wèn)題NetworkPolicy是Kubernetes控
19、制Pod和Pod間是否允許通信的規(guī)則目前主流的NetworkPolicy實(shí)現(xiàn)基于iptables實(shí)現(xiàn),同樣有iptables的擴(kuò)展性問(wèn)題iptables線性匹配,性能不高, scale能力差iptables線性更新,更新速度慢增強(qiáng)網(wǎng)絡(luò)的擴(kuò)展性和性能使用eBPF加速Service和NetworkPolicy擴(kuò)展性eBPF:Linux在最近版本提供的可編程接口通過(guò)tc-ebpf將ebpf程序注入到網(wǎng)卡中大幅降低網(wǎng)絡(luò)鏈路的長(zhǎng)度和復(fù)雜度Podeth0iptablesPreRoutingfilterPostRoutingeth0Route tablePodeth0eth0eBPFTC-ebpf 注入增強(qiáng)
20、網(wǎng)絡(luò)的擴(kuò)展性和性能Nginx1192.168.1.102Nginx2192.168.1.103eth0kubeletCNIeth000BPF-agentNginx2 192.168.1.104eni1IPVLAN L2獨(dú)占ENIeni2Ingress eBPFEgress eBPFeth0Ingress eBPFEgress eBPFeth0Ingress eBPFEgress eBPF共享ENI使用eBPF加速Service和NetworkPolicy擴(kuò)展性每個(gè)節(jié)點(diǎn)上運(yùn)行eBPF Agent,監(jiān)聽(tīng)Service和NetworkPolicy,配置容器網(wǎng)卡的Ingress和Egress規(guī)則在Eg
21、ress的eBPF程序中,判斷訪問(wèn)k8s Service IP的請(qǐng)求直接負(fù)載均衡到后端Endpoint在Ingress的eBPF程序中,根據(jù)NetworkPolicy規(guī)則計(jì)算源IP決定是否放行worker1ApiServer我們使用Cilium作為節(jié)點(diǎn)上的BPF-agent去配置容器網(wǎng)卡的BPF規(guī)則/cilium/cilium/pull/10251增強(qiáng)網(wǎng)絡(luò)的擴(kuò)展性和性能300002500020000150001000050000eBPF增強(qiáng)iptablesipvs1Service1000 Service5000 Service使用eBPF加速Service和NetworkPolicy擴(kuò)展性 性
22、能對(duì)比通過(guò)eBPF的對(duì)鏈路的簡(jiǎn)化,性能有明顯提升并且通過(guò)編程的eBPF的形式,讓Service擴(kuò)容時(shí)也幾乎沒(méi)有性能損耗Nginx-ab性能測(cè)試增強(qiáng)網(wǎng)絡(luò)的擴(kuò)展性和性能Kubernetes Coredns性能和擴(kuò)展性問(wèn)題Kubernetes Pod解析DNS域名會(huì)search很多次,例如如下Pod中DNS配置:$ cat /etc/resolv.conf nameserver 0search kube-system.svc.cluster.local svc.cluster.local cluster.local options ndots:5當(dāng)它請(qǐng)求,會(huì)依次解析.kube-system.svc.cluster.local - NXDOMAIN .svc.cluster.local - NXDOMA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 加盟企業(yè)合同范本
- 廠房水電維護(hù)合同范本
- 賣貨主播合同范本
- 單位項(xiàng)目托管合同范本
- 乙方酒吧入股合同范本
- 吃雞電子合同范例
- 農(nóng)業(yè)股權(quán)出讓合同范本
- 賣肉合同范本
- 廚房廚師合同范本
- 古巴食糖租船合同范本
- 2025年黑龍江交通職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 個(gè)人畫協(xié)議合同范本
- 2024-2025學(xué)年高一下學(xué)期開(kāi)學(xué)第一節(jié)課(哪吒精神)主題班會(huì)課件
- 人教版2025-初中物理實(shí)驗(yàn)室實(shí)驗(yàn)課程安排
- 2024年無(wú)錫科技職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 舞蹈藝術(shù)賞析課件
- 2025江蘇泰州興化市陳堡鎮(zhèn)村級(jí)后備干部招聘10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中冶建工集團(tuán)限公司校園招聘114人高頻重點(diǎn)提升(共500題)附帶答案詳解
- (完整版)python學(xué)習(xí)課件
- CNAS-RL01:2019實(shí)驗(yàn)室認(rèn)可規(guī)則
- 2025中國(guó)人民解放軍空軍部隊(duì)軍工廠招聘21人管理單位筆試遴選500模擬題附帶答案詳解
評(píng)論
0/150
提交評(píng)論