Kubernetes之上到底該構(gòu)建什么?這些或許能給你啟發(fā)
Kubernetes已經(jīng)成為各種規(guī)模企業(yè)在生產(chǎn)環(huán)境事實(shí)上的容器編排平臺(tái),在各種應(yīng)用中設(shè)置Kubernetes都是基礎(chǔ)。
那么在Kubernetes集群之上到底要構(gòu)建什么?比如,Web和API層中的無狀態(tài)應(yīng)用程序是很好的初始用例,Kubernetes幫助其補(bǔ)足了安全性,可伸縮性和開發(fā)者生產(chǎn)力方面的差距。但不限于此!
服務(wù)網(wǎng)格
建立在Kubernetes之上的微服務(wù)網(wǎng)絡(luò)帶來了分布式計(jì)算問題。盡管Kubernetes解決了服務(wù)發(fā)現(xiàn),可擴(kuò)展性問題,但Kubernetes生態(tài)系統(tǒng)需要適用于第7層流量網(wǎng)絡(luò)的解決方案。Istio和Linkerd等服務(wù)網(wǎng)格為微服務(wù)帶來了高級(jí)功能,例如流量控制,安全性和可觀察性等。服務(wù)網(wǎng)格與Envoy等代理相結(jié)合,可以為微服務(wù)提供強(qiáng)大的安全性和網(wǎng)絡(luò)抽象。而且,開發(fā)者和企業(yè)可以受益于通用框架的改編,從而提高了效率和生產(chǎn)率。
有狀態(tài)的工作負(fù)載
在Kubernetes中運(yùn)行有狀態(tài)工作負(fù)載是一個(gè)快速發(fā)展的方向。因?yàn)镵ubernetes有名為StatefulSets的內(nèi)置對象,可為Pod提供網(wǎng)絡(luò)尋址和順序保證。將StatefulSet和應(yīng)用程序運(yùn)算符組合在一起可以為運(yùn)行有狀態(tài)的工作負(fù)載(例如需要持久保存狀態(tài)的數(shù)據(jù)庫和舊版應(yīng)用程序)提供強(qiáng)大的解決方案。
開發(fā)者經(jīng)驗(yàn)(DevEx)
Kubernetes的學(xué)習(xí)曲線很陡峭,所以對于企業(yè)開發(fā)者來說挑戰(zhàn)不小。Kubernetes的挑戰(zhàn)是有原因的,比如Kubernetes的設(shè)計(jì)僅具有極少的功能,僅提供了足夠的構(gòu)建基塊即可在其之上構(gòu)建自定義的平臺(tái)即服務(wù)(PaaS)。根據(jù)企業(yè)的成熟度,平臺(tái),DevOps或SRE團(tuán)隊(duì)等專業(yè)團(tuán)隊(duì)可以自定義Kubernetes,并簡化應(yīng)用程序開發(fā)者的工作。由于部署容器的成本和時(shí)間很少,因此對于產(chǎn)品開發(fā)團(tuán)隊(duì)而言,自定義設(shè)置可能是一種非常強(qiáng)大的機(jī)制,可以提高競爭優(yōu)勢。增強(qiáng)的開發(fā)者體驗(yàn)很大程度上歸功于產(chǎn)品功能的更快上市,以及嵌入式安全的最佳實(shí)踐。如Skaffold之類的工具可以被用來簡化開發(fā)者的Kubernetes,再比如微軟Azure Dev Spaces提供的快速迭代模型,可以使每個(gè)開發(fā)者在大型團(tuán)隊(duì)設(shè)置中使用他們的pod實(shí)例。
無服務(wù)器
在公有云環(huán)境,不一定需要在Kubernetes上構(gòu)建FaaS(功能即服務(wù))。企業(yè)可以簡單地利用專用的無服務(wù)器解決方案,比如AWS Lambda。無服務(wù)器主要有兩個(gè)方面;開發(fā)者的經(jīng)驗(yàn)是只需簡單地上傳一段代碼,而不必?fù)?dān)心基礎(chǔ)架構(gòu)和成本效益問題。如果在本地運(yùn)行Kubernetes,則仍然可以通過PaaS工具帶來無服務(wù)器的的體驗(yàn)功能。開發(fā)者只需提供他們的git repo即可啟動(dòng)該服務(wù),但這無法帶來無服務(wù)器的成本效益。在真正的無服務(wù)器模型中,僅當(dāng)調(diào)用服務(wù)時(shí),容器或進(jìn)程才會(huì)進(jìn)行冷啟動(dòng),如Knative之類的框架可能會(huì)將無服務(wù)器的開發(fā)者經(jīng)驗(yàn)和成本效率特性帶入到本地Kubernetes的部署中。
機(jī)器學(xué)習(xí)管道
基礎(chǔ)架構(gòu)資源的有效共享是Kubernetes平臺(tái)的關(guān)鍵功能之一。CPU等硬件資源被過度分配用于工作負(fù)載,并且在需要時(shí)也會(huì)受到限制。GPU可以在多個(gè)機(jī)器學(xué)習(xí)容器工作負(fù)載之間共享,從而為本地設(shè)置帶來了成本效益。此外,還有出色的開源機(jī)器學(xué)習(xí)管道,如基于Kubernetes構(gòu)建的Kubeflow。Kubeflow使數(shù)據(jù)科學(xué)家可以在Kubernetes中有效地運(yùn)行其模型。Kubeflow補(bǔ)足了共享昂貴的GPU,以及提供強(qiáng)大的數(shù)據(jù)管道編排機(jī)制的差距。
云原生CI/CD管道
CI/CD管道通常包括運(yùn)行一系列測試,例如單元測試,集成測試,靜態(tài)代碼分析,安全掃描,這些在很大程度上是通過Jenkins管道進(jìn)行編排的。一些團(tuán)隊(duì)正在練習(xí)將這些Jenkins作業(yè)作為容器運(yùn)行。容器的爆炸性增長,今天的Jenkins正努力擴(kuò)大部署流程。利用Kubernetes調(diào)度程序的功能,有一個(gè)全新的出色模型可以運(yùn)行整個(gè)業(yè)務(wù)流程。這是運(yùn)行CI/CD編排的云原生方法。如JenkinsX和Tekton之類的項(xiàng)目,將充分利用Kubernetes的編排和調(diào)度能力,將你的Jenkins管道提升到新的水平。
零信任網(wǎng)絡(luò)
如今許多企業(yè)都在努力發(fā)展基于邊界的網(wǎng)絡(luò)安全模型,使得Kubernetes容器網(wǎng)絡(luò)接口(CNI)的插件有了用武之地。如Calico之類的項(xiàng)目可以實(shí)施Kubernetes網(wǎng)絡(luò)策略來隔離每個(gè)工作負(fù)載,從而提供不信任任何工作負(fù)載的細(xì)粒度分區(qū)。
【責(zé)任編輯:趙寧寧 TEL:(010)68476606】
點(diǎn)贊 0