歡迎訪問網易雲社區,瞭解更多網易技術產品運營經驗。 後端
10 月 15 日,聚焦 Kubernetes 中國行業應用與技術落地的首屆中國 Kubernetes 用戶大會(KEUC)在杭州成功舉辦。本次大會吸引了來自全球各地的技術精英齊聚一堂,共同探討、分享 Kubernetes 最前沿技術和成果,對於 Kubernetes從理論到落地推廣,並走向國際化有着極爲深遠的意義。安全
大會的Keynote環節中,網易雲基礎設施部技術總監張曉龍帶來了題爲「容器及其編排技術在網易公有云的應用」的演講。性能優化
網易從2012年就開始使用LXC工具部署內部業務,2014年研究容器並基於Docker部署面向網易內部產品的消息推送服務,2015年開始研究容器編排並基於kubernetes實現網易自身的容器編排服務,2016年將公有云基礎設施服務(雲主機、雲網絡、雲硬盤)與已有容器及其編排服務深度整合並優化,併發佈網易雲容器服務(蜂巢容器雲),目前在研發面向高性能場景的公有云裸金屬容器。網絡
網易雲容器服務的目標是面向海量互聯網用戶提供按需使用、高性能、安全可靠的公有容器雲,爲了完成這個目標,主要遇到了四大挑戰:架構
多租戶隔離:實現容器系統內核、網絡的隔離,實現容器的安全可靠;併發
資源動態管理:容器的計算、網絡、存儲資源按需動態分配與回收;負載均衡
高可擴展:實現大規模容器下的高效編排管理;分佈式
高性能:提供高網絡吞吐量、高IOPS的容器。微服務
網易雲深度整合IaaS與容器及其編排服務高併發
網易雲將基礎設施與容器編排服務作了深度整合與優化,實現了容器網絡/內核的租戶隔離;基礎設施的性能優化可直接提高容器性能;實現容器運行資源按需動態管理;將資源管理和容器編排分層,下降容器集羣管理的複雜性。
此外,網易雲經過對社區原生集羣編排的一系列優化,實現了Kubernetes單集羣容器管理能力相比官方1.6版本6倍的性能提高,同時實現了多個Kubernetes集羣並行擴展的能力,使得咱們能夠面向海量互聯網業務提供大規模容器集羣的管理。
最後,網易雲結合計算、存儲、網絡層面的基礎設施實現了容器的高性能:
計算層面:容器直接運行於裸機,消除KVM虛擬化/IO路徑的開銷,計算性能提高15%;
網絡層面:基於DPDK/SR-IOV實現高速網絡包轉發,網絡包處理能力接近150W;
存儲層面:容器使用自研高性能分佈式塊存儲後端,磁盤寫性能3W+ IOPS/300Mbps。
最後,張曉龍透露將來網易雲會在如下三個方面繼續深耕:研發GPU/FPGA 高性能容器,跟進開源社區最新版本並適配,加大參與社區力度並反饋社區。
在Kubernetes技術論壇中,網易雲首席解決方案架構師劉超分享了「網易雲如何基於大規模Kubernetes集羣支持高併發應用」。
網易雲首席解決方案架構師 劉超
首先,劉超以網易考拉海購爲例,介紹了大規模雲原生應用的支撐痛點。考拉在拆分爲微服務後,各個服務間的關聯關係是很是複雜的。爲了支撐這個複雜的應用,會對Kubernetes集羣產生如下需求:首先,在入口須要有高性能負載均衡器承載外部大規模的流量,流量進來後須要高性能私有網絡來支撐組件間的相互訪問;其次,要保證容器網絡和虛擬機網絡互通,使得容器能夠訪問PaaS平臺的服務:此外,還包括高可用、服務發現、統一的配置中心等需求。
劉超分別從架構、網絡、負載均衡、服務發現等方面介紹了網易雲如何解決大規模雲原生應用的痛點,從而支撐考拉業務的。
網易雲容器服務平臺架構
上圖是網易雲容器服務平臺的架構,網易雲的容器服務部署在底層的IaaS平臺之上,須要動態依賴底層的計算資源來建立雲網絡、雲硬盤、Node節點等資源。經過網易雲自研Netease Controller組件,能夠監聽事件事先準備好底層的硬件資源;
雲網絡方面,網易雲自研的CNI插件部署在每一個虛擬機節點上,每當發現有Pod起來的時候,就會調用CNI插件,從IaaS平臺上虛擬出一張網卡打到虛擬機裏。
容器服務的網絡模型
在IaaS平臺或虛擬機中部署容器,一般會遇到二次虛擬的問題,即物理機到虛擬機的一次虛擬和虛擬機到容器的一次虛擬,對吞吐量會產生很大影響,如左圖所示。爲了解決這個問題,網易雲將虛擬機的網卡打到容器中(右圖),容器看到的網絡和虛擬機看到的網絡是同一個二層網絡,一方面的好處是隻有一層overlay,另外一方面虛擬機和容器之間能夠相互訪問,使得虛擬機和容器混合部署的應用能夠無感知地遷移,而且容器也能夠訪問虛擬機上的PaaS服務。
負載均衡方面,網易雲也開發了一個Load Blancer Controller,要起一個負載均衡的時候,會調用Load Balancer Manager去建立一個虛擬的Load Balancer。咱們的負載均衡包含2層,一層是物理的負載均衡,全部租戶共享;另一層是虛擬機中的HAProxy,負載均衡和虛擬機或容器的鏈接經過OVS的二層網絡就能夠搞定。
Kubernetes默認使用用kube-proxy實現服務發現,考拉和雲音樂等大型應用更傾向於使用其作外部的服務發現,能夠簡化配置;而內部的服務發現一般沿用容器化前的服務發現方案Dubbok,一方面由於Dubbok的功能更強大,另外一方面避免底層平臺的綁定。
網易云爲您提供容器服務,歡迎點擊免費試用。
文章來源: 網易雲社區