🎯 課程目標__HTMLTAG_68___
完成本課程後,您將:
- ✅ 了解微服務本地部署、雲端部署和混合部署之間的差異
- ✅ 了解生產系統的架構概述和所有核心組件
- ✅ 了解選擇堆疊中每種技術的原因(Kubernetes、Ceph、Patroni、Istio、ArgoCD...)
- ✅ 設定整個課程的實驗室環境
- ✅ 了解 50 課程的路線圖以及各部分之間的連結__HTMLTAG_81___
第 1 部分:為什麼選擇本地微服務?
1.1。實際上下文
在雲端原生時代,許多組織仍選擇本地部署,因為:
___HTMLTAG_90__HTMLTAG_91___📊 實際統計資料(2025-2026):HTMLTAG_92__HTMLTAG_93
- ~60% 的企業工作負載仍在本地或混合運行 (Gartner)
- 擴充時雲端成本每年增加 30-40% →「雲端回流」趨勢
- 受監管產業(金融、醫療保健、政府)需要資料主權__HTMLTAG_100___
- 延遲敏感應用程式需要接近使用者/裝置
1.2。比較本地、雲端與混合
___HTMLTAG_122__HTMLTAG_123___初始成本(資本支出)___HTMLTAG_124__HTMLTAG_125___ ___HTMLTAG_134__HTMLTAG_135___長期費用 (OpEx)___HTMLTAG_136__HTMLTAG_137___ ___HTMLTAG_146__HTMLTAG_147___資料主權___HTMLTAG_148__HTMLTAG_149___ ___HTMLTAG_158__HTMLTAG_159___延遲___HTMLTAG_160__HTMLTAG_161___ ___HTMLTAG_170__HTMLTAG_171___自訂___HTMLTAG_172__HTMLTAG_173___ ___HTMLTAG_182__HTMLTAG_183___操作複雜性___HTMLTAG_184__HTMLTAG_185___ ___HTMLTAG_194__HTMLTAG_195___縮放速度___HTMLTAG_196__HTMLTAG_197___ ___HTMLTAG_206__HTMLTAG_207___合規性___HTMLTAG_208__HTMLTAG_209___ ___HTMLTAG_218__HTMLTAG_219___供應商鎖定___HTMLTAG_220__HTMLTAG_221___| 標準 | 本地 | 公有雲 | 混合 |
|---|---|---|---|
| 高(購買硬體) | 低(即用即付) | 平均 | |
| 縮放時較低__HTMLTAG_139___ | 高且不可預測__HTMLTAG_141___ | 取決於工作負載 | |
| ✅ 完全控制__HTMLTAG_151___ | ⚠️ 取決於區域 | ✅ 大部分是本地的 | |
| ✅ 最低 | 取決於區域 | 適用於邊緣情況 | |
| ✅ 無限制 | 受提供者限制 | 彈性__HTMLTAG_179___ | |
| ❌ 高(自我管理) | ✅ 低(託管) | 最高 | |
| ❌ 慢(購買硬體) | ✅ 分鐘(自動縮放) | 靈活 | |
| ✅ 最容易回應 | 需要共同負責 | 好 | |
| ✅ 否 | ❌ 高 (AWS/GCP/Azure) | 平均 |
1.3。您什么时候应该选择本地部署?
___HTMLTAG_234__HTMLTAG_235___✅ 在下列情況下應選擇本機部署:___HTMLTAG_236__HTMLTAG_237___- 工作負載穩定、可預測(不會不斷地上下波動)
- 高合規性要求(HIPAA、PCI-DSS、GDPR 資料駐留)
- 基礎設施投資(資料中心、伺服器、網路)
- 雲端每月費用超出門檻(~50K-100K+/月)
- 具有營運經驗的DevOps/SRE團隊__HTMLTAG_248___
- 需要超低延遲 (< 1ms giữa services)
HTMLTAG_252__HTMLTAG_253❌ 在下列情況下請勿選擇本機:HTMLTAG_254__HTMLTAG_255
- 早期新創公司需加快上市速度
- 工作負載突發,難以預測__HTMLTAG_260___
- 团队 < 5 người, không có infra engineer
- PoC/MVP 需要快速部署__HTMLTAG_264___
第 2 部分:整體系統架構
2.1。总体架构图
程式碼區塊_0
2.2。核心组件和角色
第 1 層:基礎設施基礎
| 元素__HTMLTAG_280___ | 技术 | 角色 | 课程__HTMLTAG_286___ |
|---|---|---|---|
| 容器運行時 | 容器 2.x | 依 CRI 標準運作容器 | 第 5 课 |
| K8s 编排__HTMLTAG_302___ | kubeadm(K8s 1.31+) | HA 控制平面、調度、自我修復__HTMLTAG_306___ | 第 5-7 课 |
| CNI 网络__HTMLTAG_312___ | Cilium (eBPF) | Pod 網路、NetworkPolicy、哈伯可觀測性__HTMLTAG_316___ | 第 8 课 |
| 負載平衡器 | 金属LB | 將外部 IP 授予裸機上的服務 | 第 9 课 |
| API 伺服器 HA | keepalived + HAProxy | K8s API 端點的虛擬 IP__HTMLTAG_336___ | 第 4 课 |
| 集群状态 | etcd(3 個節點) | K8s 分散式鍵值儲存 | 第 10 课 |
第 2 層:分散式儲存
| 元素__HTMLTAG_360___ | 技術 | 角色 | 課程 |
|---|---|---|---|
| 儲存編排器 | 車操作員 | 管理 K8s 上的 Ceph 生命週期 | 第 11-12 課 |
| 區塊儲存 | Ceph RBD | PV 用於資料庫(PostgreSQL、etcd) | 第 13 課 |
| 共享儲存 | CephFS | ReadWriteMany 用於微服務__HTMLTAG_396___ | 第 14 課 |
| 物件儲存 | Ceph RGW (S3) | 備份、Loki 日誌、Thanos 指標 | 第 15 課 |
第 3 層:資料層
| 元素 | 技術 | 角色 | 課程__HTMLTAG_426___ |
|---|---|---|---|
| 主資料庫 | PostgreSQL 高可用性 (CloudNativePG) | ACID 事務,關係資料 | 第 16-17 課 |
| 連線池 | PgBouncer | 連線池,減少資料庫負載__HTMLTAG_446___ | 第 18 課 |
| 資料庫備份 | pgBackRest | 完整/增量備份,PITR | 第 19 課 |
| 訊息佇列 | RabbitMQ HA | 非同步訊息傳遞、任務佇列__HTMLTAG_466___ | 第 21 課 |
| 事件流 | 卡夫卡 (Strimzi) | 事件溯源、日誌聚合 | 第 22 課 |
| 快取 | Redis HA | 快取、會話儲存、速率限制__HTMLTAG_486___ | 第 23 課 |
第 4 層:服務網格與網路
| 元素 | 技術 | 角色 | 課程__HTMLTAG_506___ |
|---|---|---|---|
| 服務格 | Istio | mTLS、流量管理、可觀測性__HTMLTAG_516___ | 第 24-25 課 |
| 入口控制器 | NGINX 入口 | HTTP/HTTPS 路由到叢集 | 第 26 課 |
| TLS 自動化 | 憑證管理器 | 自動核發/續訂憑證 | 第 26 課 |
| 網關 API | Istio + 網關 API | 下一代入口,金絲雀路由 | 第 27 課 |
第 5 層:平台操作
| 元素__HTMLTAG_560___ | 技術 | 角色 | 課程 |
|---|---|---|---|
| GitOps | ArgoCD HA | 來自 Git 的宣告式部署 | 第 28、30 課 |
| 包裝 | 頭盔 | K8s 清單範本 | 第 29 課 |
| 秘密 | Vault HA + ESO | 集中式機密管理 | 第 31 課 |
| 指標 | 普羅米修斯 HA + 薩諾斯 | 指標收集,長期儲存 | 第 32 課 |
| 儀表板 | Grafana HA | 可視化、警報 | 第 33 課 |
| 日誌 | 洛基 + 合金 | 集中日誌聚合 | 第 34 課 |
| 痕跡 | 節奏 + OpenTelemetry__HTMLTAG_634___ | 分散式追蹤 | 第 35 課 |
| 政策 | Kyverno | 存取控制,策略即程式碼 | 第 37 課 |
| 運行時安全性 | 法爾科 | 威脅偵測 | 第 38 課 |
| 影像安全 | Trivy + Harbor | 漏洞掃描,私有註冊表 | 第 39 課 |
| 備份 | Velero | 叢集備份/還原 | 第 44 課 |
| 混沌測驗 | 混沌網格 | 彈性驗證 | 第 45 課 |
第 3 部分:為什麼選擇每種技術?
3.1。 Kubernetes (kubeadm) — 為什麼不使用託管 K8?
本地沒有 EKS/GKE/AKS。選項:
___HTMLTAG_716__HTMLTAG_717___kubeadm___HTMLTAG_718__HTMLTAG_719___| 工具 | 優點 | 缺點 | 相關 |
|---|---|---|---|
| 官方K8s工具,靈活,生產級 | 手動設置,需要深入理解 | ✅ 製作 | |
| k3s | 輕量級,易於安裝__HTMLTAG_731___ | 刪除功能,使用 SQLite 取代 etcd | 邊緣/物聯網 |
| RKE2 | FIPS 相容,Rancher 整合 | 供應商特定 | Rancher 使用者 |
| Kubespray | 基於 Ansible,可重現 | 緩慢、Ansible 複雜性 | 大型叢集 |
👉 選擇kubeadm因為:官方工具,生產級,有助於最深入地了解K8s內部。
3.2。 Cilium CNI — 為什麼不是 Calico 或 Flannel?
___程式碼區塊_1___3.3。 Rook-Ceph — 為什麼不是 Longhorn 或 NFS?
___程式碼區塊_2___3.4。 Istio — 為什麼不是 Linkerd?
___程式碼區塊_3___第 4 部分:環境實驗室設定
4.1。實驗室的最低硬體
您至少需要以下資源來練習整個課程:
選項 A:功能強大的主機上的虛擬機器(建議)
程式碼區塊_4
___HTMLTAG_779__HTMLTAG_780___總計: ~26 個 vCPU、58GB RAM、520GB 磁碟
選項 B:雲端虛擬機器 (AWS/GCP/Hetzner)
___程式碼區塊_5___選項 C:裸機(類似生產)
___程式碼區塊_6___4.2。實驗室網路佈局
程式碼區塊_7
4.3。使用 Vagrant 快速建立虛擬機器(可選)
___程式碼區塊_8___程式碼區塊_9
4.4。為所有節點設定 SSH 金鑰
___程式碼區塊_10___第 5 部分:學習路線 50 課程
5.1。各部分之間的依賴關係圖
程式碼區塊_11
5.2。預計時間
___HTMLTAG_936__HTMLTAG_937___總計___HTMLTAG_938__HTMLTAG_939___ ___HTMLTAG_940__HTMLTAG_941___50___HTMLTAG_942__HTMLTAG_943___ ___HTMLTAG_944__HTMLTAG_945___~123小時___HTMLTAG_946__HTMLTAG_947___ ___HTMLTAG_948__HTMLTAG_949___~18 週___HTMLTAG_950__HTMLTAG_951___| 部分 | 貼文編號 | 時間 | 時間線(2小時/天) |
|---|---|---|---|
| 第 1 部分:基礎 | 4 | ~8小時 | 第 1 週 |
| 第 2 部分:K8s HA | 6 | ~14小時 | 第 2-3 週 |
| 第 3 部分:Rook-Ceph | 5 | ~11h | 第 3-4 週 |
| 第 4 部分:PostgreSQL__HTMLTAG_847___ | 5 | ~12小時 | 第 5-6 週 |
| 第 5 部分:MQ HA | 3 | ~8小時 | 第 6-7 週 |
| 第 6 部分:Istio | 4 | ~10小時 | 第 7-8 週 |
| 第 7 部分:GitOps | 4 | ~11h | 第 9-10 週 |
| 第 8 部分:可觀察性__HTMLTAG_887___ | 4 | ~10小時 | 第 10-11 週 |
| 第 9 部分:安全性 | 4 | ~10小時 | 第 12-13 週 |
| 第 10 部分:部署 | 4 | ~9h | 第 13-14 週 |
| 第 11 部分:DR | 2 | ~5 小時 | 第 15 週 |
| 第 12 部分:操作 | 5 | ~15小時 | 第 15-18 週 |
第 6 部分:慣例和課程中的慣例
6.1。命名約定
___程式碼區塊_12___6.2。課程中的符號
- 💡 提示: 有用的提示、最佳實務
- ⚠️ 警告:小心,可能會導致錯誤
- ❌ 危險:絕對不要在生產中這樣做
- 📋 清單: 清單
- 🔬 深入研究: 技術說明
- 🛠️ 實驗室: 練習
💡 重點
-
___HTMLTAG_993__HTMLTAG_994___本地微服務適合需要資料主權、可預測成本和超低延遲的組織
___HTMLTAG_997__HTMLTAG_998___Kubernetes HA 是一個編排平台,結合 CNCF 工俱生態系統建立生產平台
___HTMLTAG_1001__HTMLTAG_1002___全端__HTMLTAG_1003___包含6層:基礎設施→儲存→資料→網路→平台→安全性
___HTMLTAG_1005__HTMLTAG_1006___每項技術依標準選擇:生產級、CNCF 支援、社群活躍
___HTMLTAG_1009__HTMLTAG_1010___實驗室環境 需要至少 7 個虛擬機器(3 個主節點 + 3 個工作節點 + 1 個 LB),總 RAM 約為 58GB__HTMLTAG_1012___
🎯 練習
練習 1:評估基礎設施需求__HTMLTAG_1018___
適用情境:金融科技公司需要部署 20 個微服務,每秒處理 10,000 個請求,儲存 500GB 數據,需要 PCI-DSS 合規性。
- 計算所需的節點數(控制平面、工作執行緒、儲存)
- 估計 CPU、RAM、儲存總量
- 繪製網路拓樸圖
- 從上面的堆疊中列出所需的元件
練習 2:設定實驗室環境__HTMLTAG_1032___
- 使用選項 A 或選項 B 建立 7 個虛擬機器
- 設定虛擬機器之間的網路
- 設定基於 SSH 金鑰的驗證
- 驗證所有節點之間的 ping 連接性
- 記錄每個虛擬機器的 IP 和主機名稱
練習 3:技術比較__HTMLTAG_1046___
詳細研究並比較兩對技術:
- Cilium 與 Calico:效能基準、功能、社群
- Rook-Ceph 與 Longhorn:可擴充性、功能、操作複雜性
📚 下一篇文章
在第2課:硬體規劃與網路拓樸中,我們將深入研究CPU/RAM/磁碟的詳細大小運算、帶有VLAN的網路拓樸設計、綁定和生產環境的MTU。