在過(guò)去的幾年中,Kubernetes已經(jīng)成為了數不多的,使自己成為所屬領(lǐng)域的行業(yè)標準的新技術(shù)之一。為了理解Kubernetes帶來(lái)如此變革的原因,我們需要沿著(zhù)虛擬化內存之路回顧一番。為方便敘述,本文中會(huì )簡(jiǎn)化各種體系結構類(lèi)型,突出其核心特征和演變。
一對一(One to One)
在微型計算機之初,物理硬件主要使用一個(gè)且僅有一個(gè)操作系統,而且大多數應用程序(如數據庫,Web服務(wù)器和網(wǎng)站)通常只有一個(gè)最終用戶(hù)應用程序-——至少在生產(chǎn)中。
這意味著(zhù)當企業(yè)需要交付或host一個(gè)“pet.com”和“food.com”最終用戶(hù)應用程序時(shí),通用的生產(chǎn)體系結構就是為每個(gè)應用程序提供專(zhuān)用服務(wù)器。隨著(zhù)最終應用程序負載需求的增加,水平層在其自身的服務(wù)器中被拆分; 但總的來(lái)說(shuō),一對一的關(guān)系仍然存在。
專(zhuān)用服務(wù)器
雖然這對于更大、更簡(jiǎn)單的三層體系結構應用程序來(lái)說(shuō)效果相當好,但是低服務(wù)(即每個(gè)應用程序的專(zhuān)用服務(wù)器)使資源利用率不夠優(yōu)化,擴展速度慢且成本高,因為添加新資源往往需要數天時(shí)間,且過(guò)量配置硬件資源是緩解處理峰值需求的常見(jiàn)做法。簡(jiǎn)而言之,那段時(shí)間,構建互聯(lián)網(wǎng)服務(wù)是非常昂貴的。
“應用程序虛擬化”(如,Virtual Host)
為了提高服務(wù)粒度,大多數基礎架構應用程序(如Web服務(wù)器和數據庫)都提供了一些排序應用程序劃分功能,允許一個(gè)基礎架構應用程序進(jìn)程支持多個(gè)前端應用程序。在Web服務(wù)器領(lǐng)域,這稱(chēng)為,其中一個(gè)Web服務(wù)器可以基于服務(wù)多個(gè)網(wǎng)站。而在數據庫領(lǐng)域,單個(gè)數據庫服務(wù)器可以在同一服務(wù)器/端口上提供完全隔離的邏輯數據庫實(shí)例。
這些應用程序虛擬化功能允許企業(yè)部署邏輯上隔離的應用程序,或者至少在利用相同的物理資源時(shí)提供隔離的錯覺(jué)。
“應用程序虛擬化”(例如,Virtual Host)
與之前的模型一樣,當吞吐量要求增加時(shí),每個(gè)水平層都在自己的服務(wù)器中拆分,同時(shí)仍然為多個(gè)應用程序提供服務(wù)。某些應用程序(如數據庫)開(kāi)始提供更高級的水平擴展及其群集功能,允許一個(gè)邏輯數據庫跨越多個(gè)資源,從而實(shí)現進(jìn)一步的硬件專(zhuān)業(yè)化和更優(yōu)化的資源利用。
雖然這些技術(shù)提高了服務(wù)粒度并提高了資源利用率,但卻是以軟件架構和部署的復雜性為代價(jià)的。這增加了復雜性和相互依賴(lài)性,使得擴展服務(wù)更像是完成一件復雜的藝術(shù)品,而不是一個(gè)優(yōu)秀的工程。雖然早期的托管公司確實(shí)設法提供網(wǎng)絡(luò )托管作為服務(wù),但仍沒(méi)有避免這種復雜性。
換句話(huà)說(shuō),這斷時(shí)間,是互聯(lián)網(wǎng)復雜而脆弱的日子。
虛擬機(Virtual Machine)
隨著(zhù)Linux在服務(wù)器上越來(lái)越受歡迎,操作系統虛擬化也越來(lái)越受歡迎,這使得單個(gè)硬件可以托管多個(gè)操作系統。使用這種新模型,每個(gè)系統或應用程序可以擁有自己的操作系統和環(huán)境,同時(shí)仍然共享相同的硬件資源。
虛擬機
注:從技術(shù)上講,虛擬機技術(shù)是60年代由IBM開(kāi)創(chuàng )的。但公平地說(shuō),Linux(以及Windows,某些情況下)普及了操作系統虛擬化的概念。
這個(gè)新模型通過(guò)消除系統間的依賴(lài)性,最大限度地提高了資源利用率并簡(jiǎn)化了應用程序架構,恢復了原始形式,但這些新功能帶來(lái)的最具變革性的結果是由如AWS等驅動(dòng)的新IT運營(yíng)模式的形成,此類(lèi)服務(wù)抽象了所有硬件配置和網(wǎng)絡(luò )復雜性,從而將連接的互聯(lián)網(wǎng)操作系統作為服務(wù)提供。通過(guò)這些新的托管或內部部署服務(wù),軟件企業(yè)可以專(zhuān)注于他們最熟悉的工作: 軟件,讓少數硬件和網(wǎng)絡(luò )專(zhuān)家構建并擴展這些服務(wù)的主干。
然而,隨著(zhù)托管基礎架構服務(wù)變得越來(lái)越復雜,應用程序開(kāi)始從傳統的三層單塊體系結構轉向多服務(wù)體系結構(如,微服務(wù)),以具有成本效益的方式進(jìn)行設計、部署和管理可擴展的多服務(wù)的應用程序變得相對復雜且具有高度特定于云。
容器
業(yè)界使用相當古老的Linux功能解決了微服務(wù)體系結構的虛擬機模型限制,該功能允許將操作系統進(jìn)程封裝到單個(gè)操作系統上的操作系統資源子集中,因此,虛擬化的下一個(gè)“章節”,容器化,誕生了,而且主要是由現在幾乎無(wú)處不在的Docker容器格式占據主流。
有了容器化,應用程序現在可以根據其需求使用最優(yōu)的服務(wù)集進(jìn)行架構設計,同時(shí)相信技術(shù)將以最有效的方式劃分這些服務(wù)。過(guò)去在舊的物理硬件中需要幾天,在虛擬機中需要幾分鐘,現在只需要幾秒鐘,占用的內存非常少(即合理)。
容器
雖然容器化顯著(zhù)改善了服務(wù)粒度(即資源利用率),優(yōu)化了復雜應用程序體系結構并且在開(kāi)發(fā)和生產(chǎn)的過(guò)程中規范化了服務(wù)運行時(shí),但這些新部件的龐大數量增加了部署管理復雜性和配置挑戰。擴展生產(chǎn)系統時(shí),仍然需要特定于云的技術(shù)來(lái)擴展底層虛擬機,這增加了決定在何處以及何時(shí)創(chuàng )建新服務(wù)容器的復雜性。
總之,容器化是有幫助的,但它需要其他一些東西來(lái)實(shí)現真正的價(jià)值主張。
Kubernetes
這就是Kubernetes走上舞臺并完成這副“拼圖”的地方?;谌萜?,Kubernetes是一種服務(wù)(有時(shí)稱(chēng)為“引擎”),它提供了一種以標準和環(huán)境可移植的方式描述、管理和運行包含其所有部分(即微服務(wù))、交互和伸縮規則的完整系統的方法。
Kubernetes
以前開(kāi)發(fā)、分段和生產(chǎn)環(huán)境差別很大,而Kubernetes的新方法規范化并簡(jiǎn)化了如何描述、運行和擴展整個(gè)系統,從而大大降低了構建和管理多服務(wù)系統的成本。
重要的是要理解所有這些技術(shù)的里程碑,都是演進(jìn)式和附加式的,并且通常彼此協(xié)同使用。從純粹的技術(shù)角度來(lái)看,革命是在“進(jìn)化”而不是在“顛覆”。容器通常在虛擬機上運行,虛擬機仍在物理服務(wù)器上的主操作系統(稱(chēng)為)上運行,并且許多基礎架構應用程序(如數據庫,Web服務(wù)器和高速緩存)仍提供有用的、且有時(shí)是非常關(guān)鍵的、特定于應用程序的群集和分區能力。
將以上所有里程碑式的變化放在一起,我們可以看到所有虛擬化技術(shù)是如何附加演進(jìn)的。
雖然Kubernetes是進(jìn)化而非顛覆的結果,但其商業(yè)價(jià)值仍具有變革性。以下是Kubernetes的主要商業(yè)價(jià)值:
·將Dev規范化為Ops :由于Kubernetes是獨立于基礎設施的(即它可以在云上、本地部署,甚至在筆記本電腦上運行),它提供了一種非常強大而靈活的方式來(lái)規范化開(kāi)發(fā)和運營(yíng)環(huán)境,這可能是實(shí)現“高速開(kāi)發(fā)”中最重要的一個(gè)方法。
·消除多服務(wù)開(kāi)銷(xiāo) :就在幾年前,許多企業(yè)開(kāi)始從整體架構轉向微服務(wù)架構,而架構遷移確實(shí)帶來(lái)了重大的開(kāi)發(fā)和運營(yíng)設置阻力。Kubernetes的設計從一開(kāi)始就致力于以詳盡而相對簡(jiǎn)單的方式解決這些要求,并且只要正確使用,就完全消除了這些開(kāi)銷(xiāo)。
·最大限度地提高云端的可移植性 : Kubernetes最令人印象深刻的成就之一就是在短短幾年內掀起了整個(gè)行業(yè)的風(fēng)潮,讓所有人——從主要的云提供商到混合云技術(shù)提供商,都爭相在新標準中加入支持。這使得Kubernetes成為云端可移植性的基石,并允許大多數現代云應用可以表達其系統的80%到90%,并且能夠以云可移植的方式進(jìn)行可伸縮性拓撲。
·簡(jiǎn)化和標準化可擴展性 :云可移植性的部分價(jià)值在于對通用和自定義伸縮規則進(jìn)行標準化,這些規則使多服務(wù)系統的伸縮按指數級簡(jiǎn)化,同時(shí)在需要時(shí)仍然能夠進(jìn)行定制化。
筆者通常會(huì )以非常謹慎的態(tài)度對待最新的技術(shù),因為它們雖然感到興奮,但往往是相對短暫的。不過(guò),Kubernetes是少數幾個(gè)被鞏固為L(cháng)inux、OS虛擬化和Git等基礎技術(shù)的技術(shù)之一因為它確實(shí)能帶來(lái)看得見(jiàn)的價(jià)值。簡(jiǎn)而言之,Kubernetes可能是對于當今任何云應用程序開(kāi)發(fā)企業(yè)而言最安全的投資,如果運用得當,它可以顯著(zhù)提高開(kāi)發(fā)和交付的速度和質(zhì)量。
原文來(lái)源:Medium 作者:Jeremy Chone
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站