Kubernetes 網路、監控技術全面解讀!
宇宙文明的技術進步與其可控制的能源總量息息相關,從低到高可以確定文明發展的三種類型:類型一、能夠充分利用行星資源;類型二、能夠收集整個恆星系統的能源;類型三、可以利用星系系統的能源。
——1964年,天體物理學家尼古拉-卡爾達舍夫
如果從資源利用的角度劃分,雲計算可以劃分為兩個類型,類型一:基於傳統虛擬化構建的雲,這是目前大部分雲的形態。類型二:基於容器構建的雲,這是雲必然的未來。容器對資源的利用率要提高一個數量級,更重要的是顆粒度更細,自動化程度更高。容器是傳統虛擬化效率的數百倍,滾滾洪流,不可阻擋。
更高的類型,也意味著更複雜,筆者尤其關注容器雲在網路、監控兩方面面臨巨大的挑戰。
一、容器常見的網路解決方案概述和對比
容器常見的網路標準有兩種,分別是Docker公司提出的CNM(Container Network Model),和CoreOS公司提出的CNI(Container Network Interface)。
1. CNM介紹
Libnetwork是CNM規範的規範實現,Libnetwork提供Docker守護程序和網路驅動程序之間的介面。網路控制器負責將驅動程序與網路配對。每個驅動程序負責管理其擁有的網路,包括提供給該網路的服務。 每個網路有一個驅動程序,多個驅動程序可以與連接到多個網路的容器同時使用。
2. CNI介紹
CNI已經成為雲原生應用基金會(CNCF)的正式項目,用於編寫插件以配置Linux容器中的網路介面。CNI僅關注容器的網路連接並在刪除容器時刪除分配的資源。CNI提供了廣泛的支持,並且規範易於實現,支持第三方插件。
目前主流的容器雲都是基於Kubernetes構建,CNI也是Kubernetes所採用的網路標準。常見的CNI網路插件有:
1)常見的CNI插件介紹
Calico:Calico使用純L3方法提供簡單,可擴展的網路。Calico還提供無狀態IP-in-IP模式,除了可擴展的網路,Calico還提供策略隔離。Calico是一個基於BGP的純三層的數據中心網路方案(不需要Overlay)。
Flannel:flannel一種簡單易用的方法,可以配置為Kubernetes設計的layer3網路結構。flannel基於Linux TUN/TAP,使用UDP封裝IP包來創建overlay網路,並藉助etcd維護網路的分配情況。
Canal:Canal支持Flannel和Calico,提供開箱即用的VXLAN網路,同時還允許利用Calico策略隔離。
Cilium:Cilium是一個開源軟體,用於透明地提供和保護使用Kubernetes、Docker和Mesos等Linux容器管理平台部署的應用程序服務之間的網路和API連接。Cilium的基礎是名為BPF的新Linux內核技術,它可以在Linux本身內動態插入強大的安全性、可見性和網路控制邏輯。
kopeio-networking:kopeio-networking是專為Kubernetes而設計的,充分利用了Kubernetes API,因此更簡單,更可靠。
kube-router:Kube-router是專為Kubernetes打造的專用網路解決方案,旨在提供操作簡單性和性能。Kube-router將pod網路解決方案,服務代理和網路策略實施器作為一體化解決方案。
Romana:Romana為pod網路使用標準的第3層網路。Romana支持Kubernetes網路策略API,使群集跨網路可用區域分割,Romana支持各種網路拓撲,包括第2層和第3層網路。節點之間的路由在本地安裝,必要時使用BGP或OSPF分發到網路設備。
Weave Net:Weave Net支持多主機容器網路,可以跨越不同的雲網路配置,簡化Kubernetes上運行的舊工作負載。
2)CNI插件項目Forks數量比較
3)CNI插件項目10Gbit網路下的CPU消耗比較
由於篇幅所限,本文僅對CNI插件做簡單介紹,如果對CNI插件有進一步興趣,可以查閱相關項目官方文檔。
二、Kubernetes的監控解決方案介紹
Kubernetes因為狀態一直動態變化,因此監控也是一個難點,常見的監控工具有:
Kubelet:Kubelet通過Kubernetes API伺服器監視PodSpecs,並收集資源利用率統計信息以及pod和事件狀態。
cAdvisor:cAdvisor是一個開源容器資源使用和性能分析代理,專為容器而構建。在Kubernetes中,cAdvisor被集成到Kubelet二進位文件中。cAdvisor自動發現機器中的所有容器,並收集CPU,內存,文件系統和網路使用情況統計信息。
Prometheus:Prometheus可以原生地監測Kubernetes,Prometheus Operator簡化了Kubernetes上的Prometheus設置,並允許使用Prometheus適配器提供自定義指標API。 Prometheus提供強大的查詢語言和內置儀錶板,用於查詢和可視化數據。
Sysdig:Sysdig將來自系統調用,Kubernetes事件,Prometheus指標,statsD,JMX等的數據整合到一個頁面中,從而提供環境的全面信息。Sysdig還提供了API來查詢,以提供強大且可定製的解決方案。Sysdig和Sysdig Inspect能夠自由地執行故障排除,性能分析和取證。
Jaeger:Jaeger是優步科技發布的追蹤系統,用於在複雜的分散式系統中進行故障排除和監控事務。
Weave Scope:Weave Scope是Weaveworks開發的監控工具。Weave Scope在Kubernetes集群中生成進程,容器和主機的映射,以幫助實時了解Docker容器。還可基於圖形UI管理容器並在容器上運行診斷命令。
目前主流的Kubernetes監控方式通過Prometheus,通過Grafana展現。
從上面的介紹可以看出,Kubernetes在網路、服務狀態、監控方面有各種解決方案,每種解決方案可以說都有優缺點。筆者最近參加了UCloud的TIC大會,現場聽了UCloud優刻得實驗室負責人葉理燈關於Kubernetes的一個分享,葉理燈的分享乾貨很多,比如基於RBAC實現賬號管理隔離,有狀態和無狀態服務的管理。筆者特別關注了UCloud在Kubernetes網路和監控解決方案的獨到之處,和大家分享下。
三、KUN和UK8S網路和監控幾個厲害的玩法
葉理燈介紹了UCloud基於Kubernetes打造的內部容器雲平台(簡稱KUN)和針對外部用戶的容器管理服務UK8S。KUN的主要實現方法之一是K8S Docker,通過Docker提高運維部署效率和運維環境的一致性,通過K8S實現跨可用區容災和Auto Scaling能力,從而實現高可用、在線升級、自動擴縮、負載均衡、日誌查看、資源監控等多種功能。而UK8S可以讓用戶直接在上面部署、管理、擴展容器化應?,??需關?Kubernetes集群?身的搭建及維護等運維類?作。UK8S完全兼容原?的Kubernetes API,以UCloud私有?絡為基礎,並整合了ULB、UDisk、EIP、VPC等雲產品。
1. UK8S網路特點-連放五個大招
UK8S在網路上有五個大招,全面支持IPV6,實現了容器雲和現有公有雲的無縫融合,並且在性能和雲主機一致:
UK8S全面支持IPV6,並且能夠做到核?基礎?絡?需修改,underlay,Pod與集群外部互通。
?研CNI插件,與VPC?絡深度集成
利?SecondaryIP,API實現IP管理
?overlay,性能與雲主機?致
Pod?絡可與物理雲託管雲直接互通
令人印象深刻的是,UCloud自研的CNI(Container Network Interface)插件,使UK8S擁有與雲主機等同的網路性能(目前最高可達10 Gb/s,100萬pps)。
2. 一站式Kubernetes服務(UK8S)打造
在管理服務方面,UK8S支持完全的容器化和微服務化,可以確保所有管理服務全部運行在內部KUN平台上,基於KUN的API對服務模塊進行動態管理;一個集群對應生成一個Watcher,容易進行橫向擴展;基於Watcher Redis緩存的方式,保證用戶在控制台獲取集群信息的速度足夠快,相當於用K8S管理K8S。
託管方面,採用「UK8S 託管物理機」的模式可以合理利用存量物理資源,且無需運維管理UK8S集群以及部署外部負載均衡,業務高峰可隨時擴容集群,幫助用戶有效利用存量IT資源。例如,Master節點部署在共有雲上,Node節點分為公有雲和託管雲兩部分,兩個區的網路實現了互聯互通等。
例如:元年科技CTO 楊熠提到:「使用UK8S,開發者可以像使用普通雲伺服器一樣迅速搭建K8S環境。在享受K8S帶來的便利的同時,能夠讓開發人員集中注意力在業務實現的細節,而不必在基礎架構搭建上浪費太多的精力。UCloud為此提供的專業、快速的服務和響應機制幫助我們成功的將整個環境從自建K8S平滑遷移到UK8S。」
3.KUN監控特點介紹
UCloud KUN的監控系統方案基於Prometheus構建,Prometheus部署於K8S集群中,使用HostPath存儲數據、Metrics採集,使用 Alert Manager 聚合報警,調用 Monitor Manager 提供的 Web Hook;自研 Monitor Manager 可以實現告警信息的發送,發送渠道包括郵件和微信,告警組管理、互相監控探測功能、報警收斂;使用 Grafana 實現 Web 可視化。
筆者總結KUN監控有兩個企業用戶特別關心的點:
?研 Monitor Manager:實現告警信息的發送,發送渠道包括郵件和微信,告警組管理,互相監控探測功能,報警收斂。
監控系統?可?:冗餘部署每個 AZ 下運??個 Prometheus,各個 Prometheus 獨?運?,採集同樣的數據;每個 AZ 下運??個 Alert Manager,每個 Alert Manager 接受兩個 Prometheus 的消息,他們之間互為 peer,去除冗餘報警。
為了實現監控系統的高可用,UCloud採取了冗餘部署方案,Monitor Manager 部署在 K8S集群之外,跨AZ部署互相監控;通過微信和聽雲從外部對 Monitor Manager 進行監控;Prometheus 配置DeadMansSwitch 規則,實現一個永遠觸發的告警,MonitorManager 對其進行檢測,當較長時間沒有收到報警時,說明監控告警系統不工作了,發出告警;Grafana 使用 PVC 進行配置文件的存儲。
4. 一個終極厲害的玩法
因為UK8S在網路上能夠做到和公有雲全面融合,還可以有一個厲害的玩法--平滑遷移。因為Pod具有與VM等同的?絡待遇,讓VM與容器混合部署成為可能,也讓業務遷移到K8S更簡單。
總結:使用UK8S,就是抓住未來
Kubernetes已經發布整整5年了,但是Kubernetes還在飛速發展,絲毫沒有停下來的跡象,相反還在不斷攻城略地,Kubernetes就是現在明顯能抓住的未來。在Kubernetes落地過程中,網路和監控面臨很大挑戰,也有很多解決方案。UCloud在雲計算方面有將近十年的技術積累,推出的UK8S託管方案,如利劍出鞘,斬斷任何容器難題,讓用戶輕鬆步入容器時代,使用UK8S,就是抓住未來。


※華為:禁令損害了1200餘家美企和全球30億用戶基本通信的權利
※上海移動網路出現異常:部分用戶語音、通話受影響
TAG:雲技術之家 |