開源項目使Kubernetes更加強大。人們需要了解這些具有發(fā)展前途的開源項目,這些項目可以解決與Java、可觀測性、持續(xù)集成(CI)/持續(xù)交付(CD)管道等相關問題。
就其本身而言,Kubernetes為IT組織帶來了很多價值,從開發(fā)人員感興趣的內(nèi)容提升到可以在生產(chǎn)環(huán)境中大規(guī)模部署的內(nèi)容。云原生計算基金會(CNCF)在2019年的一項調(diào)查發(fā)現(xiàn),Kubernetes在云計算社區(qū)中的使用率從2018年的58%上升到2019年的78%。這種價值的很大一部分來自參與Kubernetes社區(qū)的個人和組織的努力。
然而,這也反映了個人和組織創(chuàng)建功能互補的開源工具的工作,這些工具與Kubernetes一起工作,使其更加強大。以下將重點介紹一些開發(fā)人員和運營商更感興趣的內(nèi)容。
1.Quarkus
Java是最流行的編程語言之一,誕生于上世紀90年代中期。在近20年的時間里,它主要針對運行的動態(tài)應用程序進行了優(yōu)化,這些應用程序假定(虛擬化)主機CPU和內(nèi)存擁有唯一的所有權(quán)(盡管采用了早期的面向服務架結(jié)構(gòu)(SOA)的方法)。企業(yè)的應用程序就是按照這種方式編寫的。
盡管仍然存在大型應用程序(“宏偉整體”有時仍然是最好的方法),但出于生產(chǎn)力、靈活性和效率的考慮,組織正在向支持微服務、反應性、功能即服務(FaaS)、12要素原則,以及向云原生應用的世界邁進。這需要重新思考如何在這樣的環(huán)境中更好地使用Java。
2.OpenTelemetry
EMA公司分析師Torsten Volk指出,最近Kubecon的熱門話題之一是可觀測性??捎^測性這一術(shù)語可以涵蓋很多領域,但是典型的定義涵蓋指標、跟蹤和日志記錄。該領域中的兩個大型項目是Prometheus(一種基于時間序列數(shù)據(jù)模型構(gòu)建的系統(tǒng)監(jiān)視和警報工具包)和Jaeger(一種分布式跟蹤工具)。監(jiān)測也很重要,但通常被認為與可觀測性不同。
OpenTelemetry是該領域的最新產(chǎn)品,它是谷歌公司的OpenCensus與Lightstep公司的OpenTracing在2019年合并而成的。
除了項目本身之外,使OpenTelemetry變得有趣的一件事是,它在分布式系統(tǒng)可觀察性空間中至少表現(xiàn)出一些統(tǒng)一性。實際上,在龐大的CNCF格局中,有許多開源項目在一定程度上相互重疊,在一定程度上可以相互補充,有時可以彼此集成,并有可能會出現(xiàn)一種更廣泛的相關項目組合模式。
3.Argo CD和Keptn
持續(xù)集成(CI)/持續(xù)交付(CD)領域的項目正在考慮使用Kubernetes原生開發(fā)模式和流程來構(gòu)建和部署管道。例如,Tekton Pipelines在Kubernetes上運行,將Kubernetes集群作為第一類,并使用容器(和容器)作為其構(gòu)建基塊。流行的Jenkins構(gòu)建工具的分支Jenkins X同樣針對云原生開發(fā)世界。
雖然Tekton可以處理完整的持續(xù)集成(CI)/持續(xù)交付(CD)管道,但一些較新的項目旨在增加部署管道的靈活性和能力。
就其本身而言,Tekton有效地將部署推向一個或多個Kubernetes集群。如果出現(xiàn)故障,Tekton必須在任何地方重新推送部署,或者操作人員需要人工推送任何失敗的部署。相比之下,Argo CD是一個聲明性GitOps工具。它確保正確的部署狀態(tài)反映在活動集群中,持續(xù)地監(jiān)視它們,并采取任何必要的操作來使所需的狀態(tài)和實際狀態(tài)保持一致。
Keptn是另一個項目,可以單獨使用Argo CD的部署功能。但是它最關注的是對投入生產(chǎn)的代碼進行額外的測試、評估和升級。
4.Envoy和Contour
以上談到了與基于微服務的分布式應用程序相關的可觀察性挑戰(zhàn)。還需要處理集群內(nèi)部以及集群與外界之間的微服務之間的流量。
數(shù)據(jù)傳輸,即Kubernetes中的“數(shù)據(jù)平臺”,已經(jīng)在Envoy周圍實施標準化。Envoy與每個應用程序同時運行,并通過與平臺無關的方式提供通用功能來抽象化網(wǎng)絡。
像Istio這樣的服務網(wǎng)格可以建立在Envoy的基礎上,以提供安全性、流量方向和集群內(nèi)部(東西向流量)以及集群與外界之間(南北向流量)的洞察力。其服務網(wǎng)格可以是操作大型基于微服務的應用程序的寶貴工具。它們也很復雜,也可能規(guī)模過大。像Contour這樣的項目只關注南北向流量;它使Envoy作為一種簡單、可靠的負載平衡解決方案可供Kubernetes用戶使用。
5.OKD 4、Fedora CoreOS和CodeReady容器
如果組織正在尋求開發(fā)人員和運營工具的Kubernetes社區(qū)發(fā)行版,需要查看OKD??梢詫⑵湟暈镽ed Hat OpenShift產(chǎn)品的“上游”項目。但是,與Universal Base Image的引入實際上更多的是同級關系,它允許更新的代碼并行地流入項目和產(chǎn)品中。
OKD 4使用Fedora CoreOS作為節(jié)點的基本操作系統(tǒng)。Fedora CoreOS是一個自動更新的小型操作系統(tǒng),用于安全地運行容器化工作負載。OKD 4提供了一個Kubernetes集群,該集群具有最新的安全修復程序和新功能,例如對cgroups v2的支持,它還為Kubernetes運營商提供支持。
OKD還支持安裝程序提供的基礎設施。在許多平臺上,安裝程序控制安裝過程的所有區(qū)域。雖然不像用戶提供的基礎設施那么靈活,但它的使用要簡單得多,并且通常應被視為大多數(shù)用戶的默認設置。
最后,為了在開發(fā)人員準備將代碼推送到持續(xù)集成(CI)/持續(xù)交付(CD管道之前為他們提供幫助,OKD 4允許組織使用CodeReady容器在筆記本電腦或臺式電腦上設置更少的預配置本地Kubernetes集群,以便進行開發(fā)和測試。它們是開始構(gòu)建OKD(或OpenShift)集群的最快方法。
更多來自Kubernetes社區(qū)的信息
如果了解一下CNCF格局,就會發(fā)現(xiàn)幾乎沒有涉及關于Kubernetes的社區(qū)創(chuàng)新。但是這些內(nèi)容應該使人們對在新的一年中應該保持關注的項目和領域有所了解。