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

第 2 課:規劃硬體與網路拓撲

計算控制平面、工作節點、儲存節點的 CPU/RAM/磁碟。網路拓撲設計:管理網路、叢集網路、儲存網路、外部網路。用於生產的 VLAN、綁定、MTU 大小調整。

🔒 DevSecOps — 第 2 課 第 2 課:規劃硬體與網路 拓樸

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

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

xdev.asia

🎯 課程目標__HTMLTAG_68___

完成本課程後,您將:

  • ✅ 計算每種類型節點(控制平面、工作執行緒、儲存)的準確大小
  • ✅ 設計具有 VLAN 分離的生產級網路拓撲__HTMLTAG_75___
  • ✅ 設定 NIC 綁定以實現 HA 網路
  • ✅ 了解並為每個網段選擇適當的 MTU
  • ✅ 為實際專案建立完整的硬體計畫

第 1 部分:調整控制平面節點

1.1。在控制平面上運行的元件

程式碼區塊_0

1.2。計算控制平面的資源

etcd 是最關鍵的元素__HTMLTAG_91___

etcd 效能主要取決於磁碟 I/O。以下是 etcd 文件中的大小調整指南:

簇大小 節點 Pod etcd CPU etcd RAM etcd 磁碟 磁碟類型
小 < 10 < 500 2 核 4GB 50GB SSD
中 10-50 500-5000 4 核 8GB 100GB NVMe SSD
大 50-100 5000+ 8 個核心 16GB 200GB NVMe SSD

⚠️ 嚴重: etcd 需要磁碟延遲 p99 < 10ms. Dùng NVMe SSD chuyên dụng cho etcd.

kube-apiserver 大小調整

___程式碼區塊_1___

控制平面節點大小調整的綜合

___HTMLTAG_276__HTMLTAG_277___總計___HTMLTAG_278__HTMLTAG_279___ ___HTMLTAG_280__HTMLTAG_281___~2 核____HTMLTAG_282__HTMLTAG_283___ ___HTMLTAG_284__HTMLTAG_285___~8 核___HTMLTAG_286__HTMLTAG_287___ ___HTMLTAG_288__HTMLTAG_289___~3.5Gi___HTMLTAG_290__HTMLTAG_291___ ___HTMLTAG_292__HTMLTAG_293___~16Gi___HTMLTAG_294__HTMLTAG_295___
組件 CPU 請求 CPU 限制 RAM 請求 RAM 限制
kube-apiserver__HTMLTAG_193___ 250m 2000公尺 512Mi 4Gi
etcd 500m 4000公尺 1Gi 8Gi
kube 調度程式 100公尺 500公尺 128Mi 512Mi
kube-controller-manager 200m 1000公尺 256Mi 1Gi
kubelet + 容器 200米 500米 256Mi 1Gi
纖毛劑 100m 500米 256Mi 1Gi
作業系統開銷 500米 - 1Gi -

💡 生產建議:___HTMLTAG_302__HTMLTAG_303___ ___程式碼區塊_2___


第 2 部分:調整工作節點的大小

2.1。根據工作負載要求計算

Worker節點計算公式:

___程式碼區塊_3___

2.2。依尺寸劃分的尺寸指南

規模 服務 工人 CPU/節點 RAM/節點 磁碟/節點
小型(實驗室) 5-10 3 8 核 32GB 200GB SSD
中 10-30 5-8 16 核 64GB 500GB NVMe
大 30-100 10-20 32 個核心 128GB 1TB NVMe
超大 100+ 20+ 64 核 256GB 2TB NVMe

2.3。系統保留資源

Kubernetes 需要為每個節點上的系統元件預留資源:

程式碼區塊_4

程式碼區塊_5


第 3 部分:調整儲存節點 (CEPH)

3.1。儲存節點上的 Ceph 元件

___程式碼區塊_6___

3.2。計算儲存容量

___程式碼區塊_7___

3.3。調整 Ceph OSD 節點的大小

___HTMLTAG_450__HTMLTAG_451___每個節點總計___HTMLTAG_452__HTMLTAG_453___ ___HTMLTAG_454__HTMLTAG_455___ ___HTMLTAG_456__HTMLTAG_457___6 核,28GB RAM___HTMLTAG_458__HTMLTAG_459___
組件 尺寸規則 範例(4 個 OSD/節點)
每個 OSD 的 CPU 每個 OSD 1 個核心(分鐘) 4 個 OSD 核心
每個 OSD 的 RAM 每個 OSD 5GB(BlueStore 預設) 20GB 用於 OSD
Ceph MON RAM ~2-4GB 4GB
系統 + K8s ~4GB RAM,2 核心 4GB,2 核

💡 推薦:___HTMLTAG_466__HTMLTAG_467___ ___程式碼區塊_8___

⚠️ 重要決定: 專用儲存節點與融合(工作節點 + 儲存)?

___程式碼區塊_9___

第 4 部分:網路拓樸設計

4.1。 4 用於生產的網路

程式碼區塊_10

4.2。 IP規劃詳情

Node 管理(VLAN 10) 叢集 (VLAN 20) 儲存(VLAN 30) 角色
lb1 192.168.10.9 10.10.20.9 - HAProxy/keepalived 主
lb2 192.168.10.10 10.10.20.10 - HAProxy/keepalived 備份
VIP - 10.10.20.100 - K8s API 伺服器 VIP
master1 192.168.10.11 10.10.20.11 - 控制平面 1
master2 192.168.10.12 10.10.20.12 - 控制平面 2
master3 192.168.10.13 10.10.20.13 - 控制平面 3
worker1 192.168.10.21 10.10.20.21 - 工作节点 1
worker2 192.168.10.22 10.10.20.22 - Worker Node 2
worker3 192.168.10.23 10.10.20.23 - 工作节点 3
儲存1 192.168.10.31 10.10.20.31 10.10.30.31 Ceph OSD 節點 1
儲存2 192.168.10.32 10.10.20.32 10.10.30.32 Ceph OSD 節點 2
存储3 192.168.10.33 10.10.20.33 10.10.30.33 Ceph OSD 節點 3
MetalLB Pool - - - 10.10.40.200-250

4.3。 NIC 綁定配置

NIC 綁定 (LACP) 提供鏈路冗餘和頻寬聚合:

程式碼區塊_11

程式碼區塊_12

4.4。 MTU 大小

網路 MTU 原因
管理 1500 標準,與所有設備相容
叢集 (K8s) 9000 巨型幀可減少 CPU 開銷,提高吞吐量__HTMLTAG_688___
儲存 (Ceph) 9000 對於 Ceph OSD 複製效能至關重要__HTMLTAG_696___
外部 1500 面向互聯網的流量標準__HTMLTAG_704___
Pod 網路 (Cilium) 8950 MTU 底層 (9000) - VXLAN 開銷 (50)

⚠️ 巨型訊框需求: 路徑上的所有交換器連接埠必須支援並啟用 MTU 9000。部署前請與交換器管理員聯絡。


第 5 部分:交換器和防火牆需求

5.1。切換要求

___程式碼區塊_13___

5.2。網路之間的防火牆規則

來源 目的地 埠 協定 目的
管理 所有節點 22 TCP SSH
外部 工人/LB 80、443 TCP HTTP/HTTPS 入口
外部 VIP 大師 6443 TCP K8s API(如果需要外部)
叢集 叢集 6443 TCP K8s API 伺服器
叢集 叢集 2379-2380 TCP etcd 對等點 &客戶端
叢集 叢集 10250 TCP kubelet API
集群 叢集 10259 TCP kube-scheduler__HTMLTAG_827___
叢集 集群 10257 TCP kube-controller-manager
集群 集群 30000-32767 TCP 節點連接埠範圍
叢集 叢集 4240、4244 TCP 纖毛健康,哈伯
叢集 叢集 8472 UDP Cilium VXLAN
儲存 儲存 6789 TCP Ceph MO_
儲存 儲存 6800-7300 TCP Ceph OSD
集群 儲存 6789,6800-7300 TCP Ceph 用戶端存取

第 6 部分:磁碟版面配置與分割區__HTMLTAG_918___

6.1。控制平面磁碟佈局

___程式碼區塊_14___

6.2。工作節點磁碟佈局

___程式碼區塊_15___

6.3。儲存節點磁碟佈局

___程式碼區塊_16___

第 7 部分:物料清單 (BOM)

7.1。生產 BOM(中 - 20 個微服務)

# 組件 數量 規格 角色
1 伺服器(控制平面) 3 8C/32GB/500GB NVMe,2×10GbE K8s 高手
2 伺服器(工作人員) 5 16C/64GB/500GB NVMe,2×25GbE 工作負載節點
3 伺服器(儲存) 3 8C/64GB/500GB NVMe + 4×2TB NVMe、2×25GbE Ceph OSD
4 伺服器(LB) 2 4C/8GB/100GB SSD,2×10GbE HAProxy/keepalived
5 ToR 開關 2 48×25GbE + 8×100GbE 上行鏈路 網路
6 UPS 2 3kVA線上雙變 電源保護
7 PDU 2 託管,雙饋送 電源分配

___HTMLTAG_1034__HTMLTAG_1035___總計: 13 台伺服器 + 2 台交換器 + 電源基礎設施


💡 重點

    ___HTMLTAG_1042__HTMLTAG_1043___控制平面需要用於etcd的NVMe SSD,8個以上內核,每個節點16-32GB RAM ___HTMLTAG_1046__HTMLTAG_1047___Worker 大小 根據 pod 請求總數 + 30% 緩衝區 + 系統保留計算得出 ___HTMLTAG_1050__HTMLTAG_1051___Ceph 儲存每個 OSD 需要 5GB RAM,原始磁碟未格式化 ___HTMLTAG_1054__HTMLTAG_1055___4 個獨立網路 按 VLAN:管理、叢集、儲存、外部 ___HTMLTAG_1058__HTMLTAG_1059___NIC 綁定 (LACP) 用於鏈路冗餘,巨型幀 9000 用於叢集/儲存 ___HTMLTAG_1062__HTMLTAG_1063___磁碟佈局: etcd 需要單獨分割區,Ceph 需要原始區塊裝置

🎯 練習__HTMLTAG_1069___

練習 1:計算尺寸

適用於包含下列系統:

  • 30 個微服務,每個服務 2 個副本,平均 1 個 CPU/2GB RAM
  • PostgreSQL 3 個節點(每個節點 4 個 CPU/8GB RAM)
  • Kafka 3 個代理程式(每個 4 CPU/8GB RAM)
  • 完整的可觀察性堆疊
  • 資料保留:90 天日誌,1 年指標

計算:工作節點數、儲存節點數、所需磁碟總容量.

練習 2:網頁設計__HTMLTAG_1089___

畫出上述系統的詳細網路拓樸圖,包括:

  • 每個網段的 VLAN 分配__HTMLTAG_1094___
  • 所有節點IP規劃表__HTMLTAG_1096___
  • NIC 綁定拓樸
  • 防火牆規則矩陣

練習 3:實驗室設定__HTMLTAG_1103___
  • 使用第1課中的Vagrantfile,為儲存網路新增NIC
  • 在虛擬機器上設定 VLAN(如果管理程式支援)
  • 測試連線:所有網路之間的 ping、iperf3
  • 驗證 MTU 9000 在叢集網路上正常運作

📚 下一篇文章

在第3課:準備Linux作業系統和系統調優中,我們將在安裝Kubernetes之前設定核心參數、關閉交換、設定NTP、SSH強化並準備所有節點。