從虛擬主機時代說起,詳述Kubernetes帶來的變革
在過去的幾年中,Kubernetes已經成為了數不多的,使自己成為所屬領域的行業標準的新技術之一。為了理解Kubernetes帶來如此變革的原因,我們需要沿著虛擬化內存之路回顧一番。為方便敘述,本文中會簡化各種體系結構類型,突出其核心特徵和演變。
一對一(One to One)
在微型計算機之初,物理硬體主要使用一個且僅有一個操作系統,而且大多數應用程序(如資料庫,Web伺服器和網站)通常只有一個最終用戶應用程序-——至少在生產中。
這意味著當企業需要交付或host一個「pet.com」和「food.com」最終用戶應用程序時,通用的生產體系結構就是為每個應用程序提供專用伺服器。隨著最終應用程序負載需求的增加,水平層在其自身的伺服器中被拆分; 但總的來說,一對一的關係仍然存在。
專用伺服器
雖然這對於更大、更簡單的三層體系結構應用程序來說效果相當好,但是低服務(即每個應用程序的專用伺服器)使資源利用率不夠優化,擴展速度慢且成本高,因為添加新資源往往需要數天時間,且過量配置硬體資源是緩解處理峰值需求的常見做法。簡而言之,那段時間,構建互聯網服務是非常昂貴的。
「應用程序虛擬化」(如虛擬主機,Virtual Host)
為了提高服務粒度,大多數基礎架構應用程序(如Web伺服器和資料庫)都提供了一些排序應用程序劃分功能,允許一個基礎架構應用程序進程支持多個前端應用程序。在Web伺服器領域,這稱為虛擬主機,其中一個Web伺服器可以基於域名服務多個網站。而在資料庫領域,單個資料庫伺服器可以在同一伺服器/埠上提供完全隔離的邏輯資料庫實例。
這些應用程序虛擬化功能允許企業部署邏輯上隔離的應用程序,或者至少在利用相同的物理資源時提供隔離的錯覺。
「應用程序虛擬化」(例如虛擬主機,Virtual Host)
與之前的模型一樣,當吞吐量要求增加時,每個水平層都在自己的伺服器中拆分,同時仍然為多個應用程序提供服務。某些應用程序(如資料庫)開始提供更高級的水平擴展及其群集功能,允許一個邏輯資料庫跨越多個資源,從而實現進一步的硬體專業化和更優化的資源利用。
雖然這些技術提高了服務粒度並提高了資源利用率,但卻是以軟體架構和部署的複雜性為代價的。這增加了複雜性和相互依賴性,使得擴展服務更像是完成一件複雜的藝術品,而不是一個優秀的工程。雖然早期的託管公司確實設法提供網路託管作為服務,但仍沒有避免這種複雜性。
換句話說,這斷時間,是互聯網複雜而脆弱的日子。
虛擬機(Virtual Machine)
隨著Linux在伺服器上越來越受歡迎,操作系統虛擬化也越來越受歡迎,這使得單個硬體可以託管多個操作系統。使用這種新模型,每個系統或應用程序可以擁有自己的操作系統和環境,同時仍然共享相同的硬體資源。
虛擬機
註:從技術上講,虛擬機技術是60年代由IBM開創的。但公平地說,Linux(以及Windows,某些情況下)普及了操作系統虛擬化的概念。
這個新模型通過消除系統間的依賴性,最大限度地提高了資源利用率並簡化了應用程序架構,恢復了原始形式,但這些新功能帶來的最具變革性的結果是由如AWS等驅動的新IT運營模式的形成,此類服務抽象了所有硬體配置和網路複雜性,從而將連接的互聯網操作系統作為服務提供。通過這些新的託管或內部部署服務,軟體企業可以專註於他們最熟悉的工作: 軟體,讓少數硬體和網路專家構建並擴展這些服務的主幹。
然而,隨著託管基礎架構服務變得越來越複雜,應用程序開始從傳統的三層單塊體系結構轉向多服務體系結構(如,微服務),以具有成本效益的方式進行設計、部署和管理可擴展的多服務的應用程序變得相對複雜且具有高度特定於雲。
容器
業界使用相當古老的Linux功能解決了微服務體系結構的虛擬機模型限制,該功能允許將操作系統進程封裝到單個操作系統上的操作系統資源子集中,因此,虛擬化的下一個「章節」,容器化,誕生了,而且主要是由現在幾乎無處不在的Docker容器格式佔據主流。
有了容器化,應用程序現在可以根據其需求使用最優的服務集進行架構設計,同時相信技術將以最有效的方式劃分這些服務。過去在舊的物理硬體中需要幾天,在虛擬機中需要幾分鐘,現在只需要幾秒鐘,佔用的內存非常少(即合理)。
容器
雖然容器化顯著改善了服務粒度(即資源利用率),優化了複雜應用程序體系結構並且在開發和生產的過程中規範化了服務運行時,但這些新部件的龐大數量增加了部署管理複雜性和配置挑戰。擴展生產系統時,仍然需要特定於雲的技術來擴展底層虛擬機,這增加了決定在何處以及何時創建新服務容器的複雜性。
總之,容器化是有幫助的,但它需要其他一些東西來實現真正的價值主張。
Kubernetes
這就是Kubernetes走上舞台並完成這副「拼圖」的地方。基於容器,Kubernetes是一種服務(有時稱為「引擎」),它提供了一種以標準和環境可移植的方式描述、管理和運行包含其所有部分(即微服務)、交互和伸縮規則的完整系統的方法。
Kubernetes
以前開發、分段和生產環境差別很大,而Kubernetes的新方法規範化並簡化了如何描述、運行和擴展整個系統,從而大大降低了構建和管理多服務系統的成本。
重要的是要理解所有這些技術的里程碑,都是演進式和附加式的,並且通常彼此協同使用。從純粹的技術角度來看,革命是在「進化」而不是在「顛覆」。容器通常在虛擬機上運行,虛擬機仍在物理伺服器上的主操作系統(稱為主機)上運行,並且許多基礎架構應用程序(如資料庫,Web伺服器和高速緩存)仍提供有用的、且有時是非常關鍵的、特定於應用程序的群集和分區能力。
將以上所有里程碑式的變化放在一起,我們可以看到所有虛擬化技術是如何附加演進的。
雖然Kubernetes是進化而非顛覆的結果,但其商業價值仍具有變革性。以下是Kubernetes的主要商業價值:
·將Dev規範化為Ops:由於Kubernetes是獨立於基礎設施的(即它可以在雲上、本地部署,甚至在筆記本電腦上運行),它提供了一種非常強大而靈活的方式來規範化開發和運營環境,這可能是實現「高速開發」中最重要的一個方法。
·消除多服務開銷:就在幾年前,許多企業開始從整體架構轉向微服務架構,而架構遷移確實帶來了重大的開發和運營設置阻力。Kubernetes的設計從一開始就致力於以詳盡而相對簡單的方式解決這些要求,並且只要正確使用,就完全消除了這些開銷。
·最大限度地提高雲端的可移植性: Kubernetes最令人印象深刻的成就之一就是在短短几年內掀起了整個行業的風潮,讓所有人——從主要的雲提供商到混合雲技術提供商,都爭相在新標準中加入支持。這使得Kubernetes成為雲端可移植性的基石,並允許大多數現代雲應用可以表達其系統的80%到90%,並且能夠以雲可移植的方式進行可伸縮性拓撲。
·簡化和標準化可擴展性:雲可移植性的部分價值在於對通用和自定義伸縮規則進行標準化,這些規則使多服務系統的伸縮按指數級簡化,同時在需要時仍然能夠進行定製化。
筆者通常會以非常謹慎的態度對待最新的技術,因為它們雖然感到興奮,但往往是相對短暫的。不過,Kubernetes是少數幾個被鞏固為Linux、OS虛擬化和Git等基礎技術的技術之一因為它確實能帶來看得見的價值。簡而言之,Kubernetes可能是對於當今任何雲應用程序開發企業而言最安全的投資,如果運用得當,它可以顯著提高開發和交付的速度和質量。
原文來源:Medium 作者:Jeremy Chone
原文鏈接:https://blog.britesnow.com/understanding-kubernetes-value-867c163d5ed2


※一圖讀懂H3C UniServer R6900 G3伺服器
※打造「數據金字塔」,小米大數據平台建設之路
TAG:IT168企業級 |