🎯 課程目標__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強化並準備所有節點。