Chuyển đến nội dung chính

第 1 課:微服務本地架構概述

比較本地、雲端與混合、微服務生產系統的核心元件(K8s、DB HA、儲存、訊息傳遞、可觀察性、安全性)、學習路徑和實驗室環境設定。

🔒 DevSecOps — 第 1 課 第 1 課:微服務架構概論 本地

使用 Kubernetes HA 在本地部署微服務

第 1 部分:平台和平臺本地基礎設施設計

xdev.asia

🎯 課程目標__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。