从物理机到K8S:应用系统部署方式的演进及其影响
公眾號「架構成長指南」,專注于生產實踐、云原生、分布式系統(tǒng)、大數(shù)據(jù)技術分享。
概述
隨著科技的進步,軟件系統(tǒng)的部署架構也在不斷演進,從以前傳統(tǒng)的物理機到虛擬機、Docker和Kubernetes,我們經歷了一系列變化。
這些技術的引入給我們帶來了更高的資源利用率、更快的部署速度和更強大的擴展性,下面讓我們一起探索這些演進,了解如何從傳統(tǒng)部署走向現(xiàn)代化架構,為軟件系統(tǒng)的開發(fā)和部署帶來更多的便利和靈活性。
物理機部署
物理機部署在計算機早期階段比較盛行,因為那時候虛擬化和云計算等技術還沒有普及,物理機是主要的部署選擇。
優(yōu)點
- 性能和資源控制:物理機提供了直接訪問硬件資源的能力,在某些對性能要求較高的應用場景中,可以實現(xiàn)更好的性能表現(xiàn)。
- 硬件特定需求:某些應用程序可能對特定硬件設備或外部接口有依賴,例如需要直接訪問物理網卡或存儲設備
缺點
系統(tǒng)資源利用率較低
- 不同應用程序依賴于同一類庫的不同版本,必須使用不同的機器
- 不同的應用程序不能共用同一端口,這使得在某些場景下,即使計算節(jié)點還有足夠的計算資源,依然無法通過 部署多個實例來提供服務
系統(tǒng)資源無法進行有效隔離
- 很可能出現(xiàn)一個應用程序耗光所有資源,導致其他應用程序無法正常運行的情況。
- 無法做到應用程序快速彈性擴容
運維方式
物理機代表:IBM小型機、HP小型機,在此架構和部署的模式下,哪種應用部署在哪些節(jié)點上,往往是固定不變的,這使得自動化運維變得困難重重,通常的做法是人工維護應用與服務器之間的關系表
虛擬機部署
虛擬機是一種將物理計算機資源劃分為多個獨立的虛擬環(huán)境的技術,通過虛擬化軟件,可以在一臺物理服務器上運行多個虛擬機,云計算的興起和發(fā)展,使得虛擬機得到了更廣泛的應用,截止目前,大部分還是有在用虛擬機部署。
優(yōu)點
- 硬件資源隔離
- 資源的充分利用
缺點
- 運維管理成本較高,需要管理的主機數(shù)量是原來的數(shù)倍,管理復雜度的提升顯而易見
- 依賴庫需要單獨安裝,版本很難保持一致
- 不容易遷移
運維方式
小公司自建私有云,采用業(yè)界開源OpenStack的云平臺進行管理,大的公有云公司采用自己的云平臺進行管理,如:阿里云、騰訊云、華為云、青云、AWS
容器化部署
容器化部署主要是以Docker為代表,Docker的出現(xiàn)填補了傳統(tǒng)虛擬化技術的一些不足之處,如啟動時間長、資源占用高等問題。它通過利用Linux內核的容器特性,實現(xiàn)了更為輕量級的虛擬化解決方案,所以不少公司采用了這種方式部署。
優(yōu)點
一致的運行環(huán)境
提供了除內核外完整的運行時環(huán)境,確保了應用運行環(huán)境一致性
快速移植
由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結果是一致的
更快速的啟動時間
傳統(tǒng)的虛擬機技術啟動應用服務往往需要數(shù)分鐘,而 Docker 容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統(tǒng),因此可以做到秒級、甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)、測試、部署的時間
更高效的利用系統(tǒng)資源
由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,Docker 對系統(tǒng)資源的利用率更高。無論是應用執(zhí)行速度、內存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術更高效
缺點
由于容器數(shù)量龐大,通過手動運維方式工作量比較大
與虛擬機比較
| 特性 | 容器 | 虛擬機 |
|---|---|---|
| 啟動 | 秒級 | 分鐘級 |
| 硬盤使用 | MB | GB |
| 性能 | 接近原生 | 弱于 |
| 系統(tǒng)支持量 | 單機支持上千個容器 | 一般幾十個 |
| 管理成熟度 | 已k8s為代表 | 以OpenStack、vmware為代表 |
K8S部署
盡管Docker提供了一種方便的容器化解決方案,但在進行大規(guī)模部署和管理時,會面臨大量的版本更新升級部署,以及高可用的管理等問題。
而Kubernetes提供了更強大和全面的容器管理和編排功能,他能夠自動處理復雜的任務,如容器調度、擴縮容、服務發(fā)現(xiàn)和負載均衡等,簡化了部署和管理過程,同時提供了更好的可擴展性和可靠性,所以是現(xiàn)在各大公司采用的主流部署方式。
優(yōu)點
應用自動化部署
只需要執(zhí)行一個命令,就可以把服務啟動起來,而不用關心該部署到那個節(jié)點上。
彈性擴縮容
使用一個簡單的命令、控制臺 或基于 CPU 內存使用情況自動對應用程序進行擴容或者縮容
灰度發(fā)布
保證在應用版本升級時,對線上用戶無感知
多環(huán)境部署支持
支持公有云,私有云,混合云,多重云部署
可維護好
提供了專門的運維系統(tǒng)界面,可以在線管理大規(guī)模應用,進行升級、回滾、監(jiān)控等,比如 Rancher、KubeSphere
缺點
K8s 系統(tǒng)架構比較復雜,對于初學者門檻有點高
運維方式
采用k8s進行容器管理,在發(fā)布服務時,構建基礎容器鏡像,到鏡像倉庫,在對應環(huán)境訪問鏡像倉庫,拉取對應容器鏡像進行部署
以上我們介紹了物理機、虛擬機、容器化和K8s部署區(qū)別,我們可以根據(jù)自身的需求選擇最適合自己的部署方式,希望對你有所幫助。
總結
以上是生活随笔為你收集整理的从物理机到K8S:应用系统部署方式的演进及其影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可视化学习:利用向量判断多边形边界
- 下一篇: 元宇宙——虚拟世界中的隐私问题