文章目錄
- 一、前言
- 二、為什么需要 Kubernetes
- 1. 傳統部署方法
- 2. 虛擬化部署
- 3. 容器化部署
- Ⅰ. 基本概念
- Ⅱ. 容器編排的必要性
- Ⅲ. 容器化部署的優勢
- 4. k8s 的歷史與發展
- 三、Kubernetes 基本概念
- 1. k8s 核心架構解析
- Ⅰ. 控制平面與工作節點
- Ⅱ. 各組件協同工作原理
- 2. k8s 核心概念
- Ⅰ. Pod:K8s的最小調度單元
- Ⅱ. 控制器:Deployment、StatefulSet等
- Ⅲ. 服務發現:Service與Ingress
- Ⅳ. 配置與存儲:ConfigMap、Secret、Volume
- 四、問題
- 1. k8s 能做什么
- 2. k8s 與 docker 的差別
- 3. 對比:容器 vs. 虛擬機 vs. 物理機
一、前言
Kubernetes(簡稱K8s)作為現代云計算架構的核心組件之一,已經成為了容器編排的行業標準。隨著容器技術的興起,傳統的應用部署和管理方式面臨著極大的挑戰,促使了Kubernetes的誕生。
二、為什么需要 Kubernetes
1. 傳統部署方法
早期,各組織將應用程序運行在物理服務器上,但由于無法限制同一服務器中各應用程序的資源使用,常常導致資源分配不均。例如,多個應用程序在同一物理服務器上運行時,某個應用可能占用大部分資源,從而影響其他應用的性能。
一種解決方案是:將每個應用程序部署到不同的物理服務器上,即使用多個應用服務器。這種方式雖能避免資源爭奪,但顯然會增加服務器維護成本,特別是當某些應用程序的資源利用率較低時。
2. 虛擬化部署
因此,引入了虛擬化技術,它允許單臺物理服務器的 CPU 同時運行多個虛擬機(VM)。虛擬化技術使得應用程序能夠在不同的虛擬機之間彼此隔離,提供了一定程度的安全性,因為一個應用程序的數據無法被其他程序隨意訪問。
虛擬化技術能夠更有效地利用服務器資源,使得對程序的操作(如添加、更新等)更加便捷,同時提升了可擴展性并降低了硬件成本。通過虛擬化,物理資源可以被整合并呈現為靈活可調整的虛擬機集群。
每個VM都作為獨立的計算單元運行(看作一臺完整的計算機),包含完整的操作系統棧和應用程序環境。
3. 容器化部署
Ⅰ. 基本概念
容器類似于虛擬機(VM),但其隔離特性更為寬松,容器之間可以共享操作系統(OS)。因此,容器相比虛擬機更為輕量級。盡管如此,每個容器依然擁有獨立的文件系統、CPU、內存和進程空間等資源。
由于容器與基礎架構分離,它具有良好的移植性,可以跨云平臺和操作系統版本進行遷移。
Ⅱ. 容器編排的必要性
隨著容器技術的普及,單個容器的管理變得相對簡單,但當應用規模擴大,涉及數百、數千個容器時,管理工作變得異常復雜。如何協調、調度、擴展、監控容器的運行是個大問題。因此,容器編排工具應運而生。容器編排幫助開發者自動化地部署、管理和擴展容器化應用。
Kubernetes 就是為了解決這些問題而設計的容器編排平臺。它能夠自動化地進行容器調度、部署、擴展以及管理,使得開發者可以專注于業務邏輯的實現,而無需過多關心底層的基礎設施。
Kubernetes 提供了一些能力:
- 自動化容器部署和復制
- 動態擴縮容能力
- 服務發現和負載均衡
- 自動恢復和自愈機制
- 聲明式配置管理
Ⅲ. 容器化部署的優勢
1. 環境一致性
- 問題:傳統部署中,開發、測試、生產環境差異可能導致“在我機器上能跑”的問題。
- 容器化解決:
- 容器將應用及其依賴(庫、配置、運行時)打包為一個標準化單元,確保環境完全一致。
- 開發、測試、生產環境使用相同的鏡像,避免因環境差異導致的故障。
2. 快速部署與擴展
- 傳統方式的問題:部署新服務需手動安裝依賴、配置環境,耗時且易出錯。
- 容器化優勢:
- 啟動快:容器輕量級(共享主機內核),啟動速度遠快于虛擬機。
- 彈性伸縮:結合編排工具(如 Kubernetes),可快速橫向擴展實例應對流量高峰。
- 回滾方便:通過鏡像版本控制,快速回退到舊版本。
3. 資源高效利用
- 與傳統虛擬機對比:
- 虛擬機(VM)需獨占完整的操作系統和內核,資源占用高。
- 容器共享主機內核,無需重復加載 OS,CPU/內存利用率更高,相同硬件可運行更多服務。
4. 隔離性與安全性
- 進程隔離:每個容器擁有獨立的文件系統、網絡和進程空間,避免應用間沖突(如端口占用)。
- 安全控制:通過命名空間(Namespace)和控制組(CGroup)限制資源訪問,減少攻擊面。
(注:需配合安全最佳實踐,如最小權限鏡像、定期漏洞掃描。)
5. 跨平臺與多云支持
- 一次構建,跨平臺運行:容器鏡像可在任何支持容器運行時(