從物理機到K8S:應用系統部署方式的演進及其影響

2023-11-30 15:00:55

公眾號「架構成長指南」,專注於生產實踐、雲原生、分散式系統、巨量資料技術分享。

概述

隨著科技的進步,軟體系統的部署架構也在不斷演進,從以前傳統的物理機虛擬機器器DockerKubernetes,我們經歷了一系列變化。

這些技術的引入給我們帶來了更高的資源利用率、更快的部署速度和更強大的擴充套件性,下面讓我們一起探索這些演進,瞭解如何從傳統部署走向現代化架構,為軟體系統的開發和部署帶來更多的便利和靈活性。

物理機部署

物理機部署在計算機早期階段比較盛行,因為那時候虛擬化和雲端計算等技術還沒有普及,物理機是主要的部署選擇。

優點

  • 效能和資源控制:物理機提供了直接存取硬體資源的能力,在某些對效能要求較高的應用場景中,可以實現更好的效能表現。
  • 硬體特定需求:某些應用程式可能對特定硬體裝置或外部介面有依賴,例如需要直接存取物理網路卡或儲存裝置

缺點

系統資源利用率較低

  • 不同應用程式依賴於同一類庫的不同版本,必須使用不同的機器
  • 不同的應用程式不能共用同一埠,這使得在某些場景下,即使計算節點還有足夠的計算資源,依然無法通過 部署多個範例來提供服務

系統資源無法進行有效隔離

  • 很可能出現一個應用程式耗光所有資源,導致其他應用程式無法正常執行的情況。
  • 無法做到應用程式快速彈性擴容

運維方式

物理機代表:IBM小型機、HP小型機,在此架構和部署的模式下,哪種應用部署在哪些節點上,往往是固定不變的,這使得自動化運維變得困難重重,通常的做法是人工維護應用與伺服器之間的關係表

虛擬機器器部署


虛擬機器器是一種將物理計算機資源劃分為多個獨立的虛擬環境的技術,通過虛擬化軟體,可以在一臺物理伺服器上執行多個虛擬機器器,雲端計算的興起和發展,使得虛擬機器器得到了更廣泛的應用,截止目前,大部分還是有在用虛擬機器器部署。

優點

  • 硬體資源隔離
  • 資源的充分利用

缺點

  • 運維管理成本較高,需要管理的主機數量是原來的數倍,管理複雜度的提升顯而易見
  • 依賴庫需要單獨安裝,版本很難保持一致
  • 不容易遷移

運維方式

小公司自建私有云,採用業界開源OpenStack的雲平臺進行管理,大的公有云公司採用自己的雲平臺進行管理,如:阿里雲、騰訊雲、華為雲、青雲、AWS

容器化部署

容器化部署主要是以Docker為代表,Docker的出現填補了傳統虛擬化技術的一些不足之處,如啟動時間長、資源佔用高等問題。它通過利用Linux核心的容器特性,實現了更為輕量級的虛擬化解決方案,所以不少公司採用了這種方式部署。

優點

一致的執行環境

提供了除核心外完整的執行時環境,確保了應用執行環境一致性

快速移植

由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上執行,無論是物理機、虛擬機器器、公有云、私有云,甚至是筆電,其執行結果是一致的

更快速的啟動時間

傳統的虛擬機器器技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接執行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間

更高效的利用系統資源

由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者檔案儲存速度,都要比傳統虛擬機器器技術更高效

缺點

由於容器數量龐大,通過手動運維方式工作量比較大

與虛擬機器器比較

特性 容器 虛擬機器器
啟動 秒級 分鐘級
硬碟使用 MB GB
效能 接近原生 弱於
系統支援量 單機支援上千個容器 一般幾十個
管理成熟度 已k8s為代表 以OpenStack、vmware為代表

K8S部署

儘管Docker提供了一種方便的容器化解決方案,但在進行大規模部署和管理時,會面臨大量的版本更新升級部署,以及高可用的管理等問題。

Kubernetes提供了更強大和全面的容器管理和編排功能,他能夠自動處理複雜的任務,如容器排程、擴縮容、服務發現和負載均衡等,簡化了部署和管理過程,同時提供了更好的可延伸性和可靠性,所以是現在各大公司採用的主流部署方式。

優點

應用自動化部署

只需要執行一個命令,就可以把服務啟動起來,而不用關心該部署到那個節點上。

彈性擴縮容

使用一個簡單的命令、控制檯 或基於 CPU 記憶體使用情況自動對應用程式進行擴容或者縮容

灰度釋出

保證在應用版本升級時,對線上使用者無感知

多環境部署支援

支援公有云,私有云,混合雲,多重雲部署

可維護好

提供了專門的運維繫統介面,可以線上管理大規模應用,進行升級、回滾、監控等,比如 RancherKubeSphere

缺點

K8s 系統架構比較複雜,對於初學者門檻有點高

運維方式

採用k8s進行容器管理,在釋出服務時,構建基礎容器映象,到映象倉庫,在對應環境存取映象倉庫,拉取對應容器映象進行部署

以上我們介紹了物理機、虛擬機器器、容器化和K8s部署區別,我們可以根據自身的需求選擇最適合自己的部署方式,希望對你有所幫助。