值得考慮的9個開源云原生項目
譯文【51CTO.com快譯】本文介紹CNCF九個值得關注的畢業和孵化開源項目。
畢業的項目
畢業的項目被認為很成熟——且被許多組織采用,須遵守CNCF的指導方針。下面是三個受歡迎的開源CNCF畢業項目。
Kubernetes
談論云原生應用程序不得不提Kubernetes。Kubernetes由谷歌發明,無疑是著名的容器編排平臺,面向基于容器的應用程序,它也是一個開源工具。
什么是容器編排平臺?基本上,容器引擎本身可用于管理幾個容器。然而,面對數千個容器和數百個服務時,管理這些容器變得異常復雜。這時候容器引擎有了用武之地。容器編排引擎通過使容器的部署、管理、網絡和可用性實現自動化來幫助擴展容器。
Docker Swarm和Mesosphere Marathon是另外的容器編排引擎,但可以肯定地說Kubernetes成為了贏家(至少目前如此)。 Kubernetes還催生了OKD之類的容器即服務(CaaS)平臺,OKD是Kubernetes的Origin社區發行版,為Red Hat OpenShift提供支持。
想開始入手,請訪問Kubernetes GitHub代碼庫,并從Kubernetes文檔頁面訪問其文檔和學習資源。
Prometheus
Prometheus是2012年在SoundCloud構建的開源系統監控和警報工具包。從那時起,許多公司和組織采用了Prometheus,該項目有一個很活躍的開發者和用戶社區。它現在是一個獨立于該公司來維護的獨立開源項目。
想認識Prometheus,不妨想象需要每天24小時、每年365天正常運行的生產系統。沒有哪個系統是完美的,有技術可減少故障(名為容錯系統)。然而,如果出現問題,最重要的是盡快找到問題。這時候像Prometheus這樣的監控工具派得上用場。Prometheus不僅僅是一個容器監控工具,它在云原生應用程序公司當中也極受歡迎。此外,包括Grafana在內的其他開源監控工具也使用Prometheus。
想開始入手Prometheus,推薦方法是查看其GitHub代碼庫。在本地運行Prometheus很容易,但您需要安裝容器引擎。你可以在Prometheus網站上查看詳細文檔。
Envoy
Envoy(或Envoy Proxy)是一個為云原生應用程序設計的開源邊緣和服務代理。Envoy創建于Lyft,是一種高性能C++分布式代理,專為單一服務和應用程序設計,還是一種為大型微服務服務網格架構設計的通信總線和通用數據平面。Envoy基于Nginx、HAProxy、硬件負載均衡系統和云負載均衡系統等解決方案的學習,與每個應用程序并行運行,通過以一種與平臺無關的方式提供通用功能來抽象網絡。
基礎設施中的所有服務流量流經Envoy網格時,在一個地方通過一致的可觀察性直觀地顯示問題區域、調整總體性能以及添加底層功能變得很容易。Envoy Proxy基本上是一種服務網格工具,可幫助組織為生產環境構建容錯系統。
服務網格應用有很多替代方案,比如優步的Linkerd(下有討論)和Istio。Istio通過部署為Sidecar并利用Mixer配置模型來擴展Envoy Proxy。Envoy值得注意的特點如下:
- 包括所有的“基本”功能(與Istio等控制平面結合使用時)
- 核心層面充當L3/L4過濾器,默認提供許多L7過濾器
- 支持gRPC和HTTP/2(上游/下游)
- 由API驅動,支持動態配置和熱重載
- 側重于度量標準收集、跟蹤和總體可觀察性
想了解Envoy、驗證其功能并獲得充分的好處,需要在運行生產級環境方面擁有豐富的經驗。您可以訪問GitHub代碼庫,從詳細文檔中了解更多信息。
孵化項目
以下是六個受歡迎的開源CNCF孵化項目。
rkt
rkt是一個pod原生容器引擎。它擁有用于在Linux上運行容器的命令行界面(CLI)。從某種意義上說,它類似其他容器,比如Podman、Docker和CRI-O。
rkt最初由CoreOS開發(后被Red Hat收購),您可以在官網上找到詳細的文檔,在GitHub上訪問源代碼。
Jaeger
Jaeger是一個面向云原生應用程序的開源端到端分布式跟蹤系統。一方面,它與Prometheus一樣是監控解決方案。不過它又不一樣,因為其使用場景可擴大到:
- 分布式事務監控
- 性能和延遲優化
- 根本原因分析
- 服務依賴項分析
- 分布式上下文傳播
Jaeger是優步開發的一種開源技術。您可以在官網上找到詳細的文檔,在GitHub上訪問源代碼(。
Linkerd
與Lyft開發Envoy Proxy一樣,優步開發了Linkerd這個開源解決方案,以維護其生產級服務。在某些方面,Linkerd就像Envoy,因為兩者都是服務網格工具,旨在提供整個平臺的可觀察性、可靠性和安全性,無需配置或代碼更改。
然而兩者存在一些細微差別。雖然Envoy和Linkerd充當代理,可以報告已連接的服務,但Envoy不像Linkerd那樣旨在成為Kubernetes Ingress控制器。Linkerd的顯著特點包括:
- 支持多種平臺(Docker、Kubernetes、DC/OS、Amazon ECS或任何獨立機器)
- 內置的服務發現抽象,以統一多個系統
- 支持gRPC、HTTP/2和HTTP/1.x請求以及所有TCP流量
您可以在Linkerd的網站上閱讀更多相關信息,并在GitHub上訪問源代碼。
Helm
Helm基本上是Kubernetes的包管理器。如果您用過Apache Maven、Maven Nexus或類似的服務,就會了解Helm的用途。 Helm可幫助您管理Kubernetes應用程序。它使用“Helm Charts”來定義、安裝和升級哪怕復雜的Kubernetes應用程序。Helm不是完成這項任務的唯一方法,另一個流行起來的概念是Kubernetes Operators,Red Hat OpenShift 4使用該概念。
您可以按照其文檔中的快速入門指南或GitHub指南來試用Helm。
Etcd
Etcd是可靠的分布式鍵值存儲項目,可用于存儲分布式系統中關鍵的數據。其主要特點如下:
- 定義明確、面向用戶的API(gRPC)
- 自動TLS,擁有可選的客戶證書驗證
- 速度快(每秒10000次寫入)
- 可靠性(使用Raft來分發)
Etcd用作Kubernetes和其他許多技術的內置默認數據存儲。話雖如此,它很少獨立運行或作為單獨的服務運行;相反,它使用集成到Kubernetes和OKD/OpenShift的服務或另外的服務。還有etcd Operators可用來管理生命周期并發掘其API管理功能。
您可以在etcd的文檔中了解更多信息,在GitHub上訪問源代碼。
CRI-O
CRI-O在遵守開放容器倡議(OCI)的情況下實現了Kubernetes運行時接口。CRI-O用于各種功能,包括:
- 運行時環境使用runc(或任何OCI運行時規范實現)和OCI運行時工具
- 使用容器/映像的映像管理
- 使用容器/存儲來存儲和管理映像層
- 通過容器網絡接口(CNI)提供網絡支持
CRI-O提供了大量文檔,包括指南、教程、文章甚至播客,您還可以訪問其GitHub頁面。
原文標題:9 open source cloud native projects to consider,作者:Bryant Son
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】