為什么你不應(yīng)該使用Kubernetes?
Kubernetes是否真的適合您的棧?
許多團(tuán)隊很高興開始使用Kubernetes。 一些人對Kubernetes本身提供的彈性,彈性,可移植性,可靠性和其他優(yōu)勢感興趣。 有些人是技術(shù)愛好者,他們只是想有機(jī)會使用該平臺,以進(jìn)一步了解它。 一些開發(fā)人員希望獲得使用它的經(jīng)驗,因此他們可以在簡歷中添加另一項非常需要的技能。 通常,如今,大多數(shù)開發(fā)人員都希望在某個時候與Kubernetes一起工作。
那可能是一個非常好的主意,但事實并非如此。

Kubernetes旨在解決分布式架構(gòu)問題
根據(jù)官方文檔網(wǎng)站的定義:
| " Kubernetes為您提供了一個框架,可以彈性地運行分布式系統(tǒng)。 它負(fù)責(zé)為應(yīng)用程序擴(kuò)展和故障轉(zhuǎn)移,提供部署模式等。" |
它不是專門為分布式系統(tǒng)而設(shè)計的,而是為容器化應(yīng)用程序制造的。 即使這樣,它的確提供了許多資源,使諸如Microservices解決方案之類的分布式系統(tǒng)的管理和擴(kuò)展變得更容易。 它也被視為編排系統(tǒng)。
自動化和編排是不同的,但是相關(guān)的概念。 自動化通過減少或取代與IT系統(tǒng)的人工交互,而是使用軟件執(zhí)行任務(wù)來降低成本,復(fù)雜性和錯誤,從而幫助您提高業(yè)務(wù)效率。
通常,自動化是指使單個任務(wù)自動化。 這與業(yè)務(wù)流程不同,業(yè)務(wù)流程是您可以自動執(zhí)行涉及多個不同系統(tǒng)中許多步驟的流程或工作流的方法。 當(dāng)您開始將自動化構(gòu)建到流程中時,可以將它們編排為自動運行。
—什么是編排? RedHat官方網(wǎng)站
換句話說,Kubernetes使管理復(fù)雜的解決方案變得更加容易,而如果沒有適當(dāng)?shù)木幣畔到y(tǒng),這些解決方案將很難維護(hù)。 雖然您可以自己實施DevOps工程實踐,但如果要從數(shù)十種服務(wù)擴(kuò)展到數(shù)百種服務(wù),則無法擴(kuò)展。
Kubernetes很復(fù)雜
為了利用其功能,開發(fā)人員和IT運營商必須具有容器,網(wǎng)絡(luò),安全性,可移植性,彈性和Kubernetes本身的知識。 為了正確利用其工作負(fù)載,您應(yīng)該了解每個組件的工作方式。 要管理集群,您應(yīng)該了解其架構(gòu),存儲,API和管理系統(tǒng),這與傳統(tǒng)的虛擬化環(huán)境有很大的不同。 為了擴(kuò)展該解決方案,您應(yīng)該學(xué)習(xí)如何集成工具來部署,監(jiān)視和跟蹤服務(wù),例如Helm和Istio。 在那里添加了許多新概念,因此您的團(tuán)隊必須為應(yīng)對這一挑戰(zhàn)做好準(zhǔn)備。
Kubernetes的小型解決方案價格昂貴
為了理解原因,讓我們強(qiáng)化Kubernetes的關(guān)鍵概念之一-彈性。 要利用此優(yōu)勢,您需要其他節(jié)點-超出運行應(yīng)用程序所需的最小數(shù)量。 如果某個節(jié)點發(fā)生故障,則請求的Pod將重定位到可用節(jié)點。 對于生產(chǎn)工作負(fù)載,建議至少三個節(jié)點具有彈性。
不難想象,如果您只托管一個應(yīng)用程序,那是不值得的。 但是,即使您擁有十個或更多,您也必須考慮群集的成本是否值得維護(hù)它。
維護(hù)環(huán)境的成本還包括運營支持。 平臺越復(fù)雜,就應(yīng)該涉及更多的專業(yè)人士。 這可能意味著雇用第三方專業(yè)公司來提供支持或包含Openshift之類的支持服務(wù)的解決方案。
何時選擇Kubernetes
根據(jù)您使用的體系結(jié)構(gòu),應(yīng)用程序的數(shù)量以及它們之間的依賴程度以及團(tuán)隊的運營能力,可以檢查Kubernetes是否是所有可用技術(shù)中的合適選擇。

借助用于容器的Web Apps,您將獲得完全可用于生產(chǎn)環(huán)境。 借助標(biāo)準(zhǔn)計劃,SSL功能和應(yīng)用程序見解,您無需任何操作即可擁有一個安全,可擴(kuò)展和受監(jiān)視的環(huán)境。
如果僅處理隔離的應(yīng)用程序或少量連接的應(yīng)用程序,則將Azure Web Apps和在同一虛擬網(wǎng)絡(luò)中運行的容器實例組合在一起可能就足夠了。
另一方面,如果您有越來越多的容器化應(yīng)用程序,將它們托管在Kubernetes中會很有趣。 您將能夠在一個集中式環(huán)境中托管多種類型的應(yīng)用程序,例如Web應(yīng)用程序,API和重復(fù)性作業(yè)。 您的團(tuán)隊將能夠?qū)W⒂贙ubernetes,而不是幾個云原生的解決方案。
如果您要處理諸如微服務(wù)之類的分布式方案,那就去吧。 分布式架構(gòu)非常復(fù)雜,而Kubernetes旨在使其變得更容易。 除了Kubernetes,我無法認(rèn)為其他任何平臺對于分布式應(yīng)用程序來說都是完整且可擴(kuò)展的。
結(jié)論
當(dāng)您處理少量的容器化應(yīng)用程序,相互隔離或彼此之間沒有依賴性時,其他主機(jī)選項(例如用于容器的Azure Web Apps或Azure容器實例)或它們的組合可能更簡單,甚至更便宜。
如果您的團(tuán)隊對Kubernetes感到滿意,并且您擁有越來越多的容器化應(yīng)用程序,則值得在單個Kubernetes平臺(例如Azure Kubernetes服務(wù))中集中托管。
Kubernetes是一個旨在提高性能并減少分布式系統(tǒng)的操作量的平臺。 基本上,這使復(fù)雜的場景(如微服務(wù))的操作復(fù)雜度降低了。
如果您處理的不是很多應(yīng)用程序,不使用分布式體系結(jié)構(gòu)或沒有專業(yè)人員在職,那么您將無法利用Kubernetes提供的優(yōu)勢-因為它不是為您而造 。 您最終將給解決方案增加意外和不必要的復(fù)雜性。




























