資訊科普系列(8) — Virtual Machines vs. Containers vs. Kubernetes

陳彥榮
MODA IT
Published in
Oct 23, 2023

什麼是 Virtual Machine(VM)?

Virtual Machine 是由軟體組成之電腦,被視為在實體機器中運行的沙箱執行環境。透過軟體模擬,VM 如同實體電腦,也有作業系統(OS)、處理器、記憶體、硬碟、網路介面卡等資源,能執行的功能幾乎完全與實體電腦一樣,換言之,是以 OS 為單位的虛擬化技術。

什麼是 Container?

Container 為輕量的獨立套件,其中封裝了完整的執行階段環境,包含必要的執行檔、二進位程式碼、程式庫和組態檔等,藉此排除可移轉性和相容性等問題,換言之,是以應用程式為單位的虛擬化技術。

什麼是 Kubernetes?

Kubernetes 名稱源自希臘文,意為「船長」,也被簡稱為 K8s(因字首 K 和字尾 s 中間有八個英文字母),是由 Google 開發,於 2014 年發布為開放原始碼軟體,以部署、擴充和管理 containerized applications 為設計核心。K8s 以叢集(Cluster)形式運作,由一組被稱為節點(Node)的實體或虛擬機器所組成。

應用程式部署環境演進

  1. 實體伺服器:由硬體和 OS 組成基礎架構,讓使用者於架構中部署、執行和管理應用程式。
  2. 伺服器虛擬化:以軟體(Hypervisor)運行實體資源配置與優化的架構,可將實體機器分割為多個獨一無二且相互隔離的 VM。和實體伺服器部署環境相比,全虛擬化讓使用者能用數量較少的實體機器,以單一作業系統(Host OS)建置能運行各式作業系統(Guest OS)的 VM,以便使用者開發、測試和部署應用程式。
  3. Containerization:由於伺服器虛擬化須在 VM 安裝 Guset OS,衍生系統資源佔據和啟動時間較長等問題,共用 Host OS 的 Container 代表輕量、快速和彈性,除了建立嚴格的資源控管機制,以分配 Host OS 的系統資源外,也為部署和擴充分散式應用程式與微服務(Microservices),提供更好的架構支援。
  4. Kubernetes:因一套應用程式通常須由多個 Container 組成,為穩定部署環境、管理資源或權限分配,K8s 扮演 Container Orchestrator,以叢集的形式運行,最小單位為 Pod,除了支援多種 Container runtime,還能依設定檔(yaml),於各個 Pod 內運行一或多個 Container,達到自動化部署與管理 Container,讓維運更加簡單、有效率。

--

--