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

第 8 課:安裝 CILIUM CNI — eBPF 網絡

使用 eBPF 而非 kube-proxy 安裝 Cilium CNI,啟用 Hubble 可觀測性,設定 NetworkPolicy L3/L4/L7,並驗證 Pod 到 Pod 網路是否正常運作。

🔒 DevSecOps — 第 8 課 第 8 課:CILIUM CNI 設定 — eBPF 網路

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

第 2 部分:使用 kubeadm 的 Kubernetes HA 叢集__HTMLTAG_62___

xdev.asia

🎯 課程目標__HTMLTAG_68___

完成本課程後,您將:

  • ✅ 了解 eBPF 以及為何 Cilium 優於傳統 CNI
  • ✅ 使用 Helm 安裝 Cilium 並驗證連線
  • ✅ 將 kube-proxy 替換為 Cilium eBPF
  • ✅ 啟用 Hubble 進行網路觀測
  • ✅ 編寫 NetworkPolicy L3/L4/L7

第 1 部分:為什麼選擇 CILIUM?

1.1。比較流行的 CNI

標準__HTMLTAG_93___ 印花布 法蘭絨 纖毛
資料平面 iptables/eBPF VXLAN eBPF 本機
網路策略 L3/L4 ❌ 不支援 L3/L4/L7
效能 好 平均 優秀
可觀察性 基本 ❌ 哈伯(深)
kube-proxy 取代 ❌ ❌ ✅ 完整
加密 (WireGuard) ✅ ❌ ✅ 原生
服務網格整合 ❌ ❌ ✅ Istio/Envoy

1.2。什麼是 eBPF?

___程式碼區塊_0___

第 2 部分:纖毛設定

2.1。安裝 Helm

___程式碼區塊_1___

2.2。刪除 kube-proxy(可選 — 替換為 Cilium)

___程式碼區塊_2___

2.3。使用 Helm 安裝 Cilium

___程式碼區塊_3___

2.4。重要參數解釋

參數 值 意義__HTMLTAG_198___
kubeProxyReplacement 正確 Cilium 完全取代 kube-proxy__HTMLTAG_208___
k8sServiceHost 10.10.20.100 VIP (HAProxy) 到 Cilium 連線 API 伺服器
ipam.模式 kubernetes 使用 K8s IPAM(適合本地部署)
hubble.relay.enabled 正確 啟用 Hubble Relay 進行流量聚合
hubble.ui.enabled 正確 啟用 Hubble UI(網頁儀表板)
operator.replicas__HTMLTAG_244___ 2 Cilium 操作員的 HA
bpf.masquerade 正確 eBPF 偽裝替換 iptables SNAT
loadBalancer.algorithm 磁浮 一致的雜湊可減少擴充時的中斷
頻寬管理器 已啟用 + bbr 基於EDT的速率限制+BBR擁塞控制

2.5。驗證 Cilium 安裝

___程式碼區塊_4___

第 3 部分:CILIUM CLI — 連結性測試

3.1。安裝 Cilium CLI

___程式碼區塊_5___

3.2。纖毛狀態

___程式碼區塊_6___

3.3。連線測試

___程式碼區塊_7___

第 4 部分:哈伯可觀測性

4.1。安裝 Hubble CLI

___程式碼區塊_8___

4.2。查看網路流量

___程式碼區塊_9___

4.3。哈伯使用者介面

___程式碼區塊_10___

第 5 部分:CILIUM 的網路策略

5.1。部署測試應用程式

___程式碼區塊_11___

5.2。預設拒絕所有策略

___程式碼區塊_12___

程式碼區塊_13

5.3。允許前端 → 後端

___程式碼區塊_14___

程式碼區塊_15

5.4。 Cilium L7 策略(HTTP 感知)

___程式碼區塊_16___

程式碼區塊_17


第 6 部分:故障排除

6.1。常見問題

___程式碼區塊_18___

6.2。清理測試資源

___程式碼區塊_19___

💡 重點

    ___HTMLTAG_319__HTMLTAG_320___Cilium eBPF 優越:O(1) 查找,取代 kube-proxy,L7 策略 ___HTMLTAG_323__HTMLTAG_324___kubeProxyReplacement=true:Cilium 處理所有服務,不需要 kube-proxy ___HTMLTAG_327__HTMLTAG_328___Hubble 實現深度可觀察性 — 查看流量、DNS 查詢、HTTP 請求 ___HTMLTAG_331__HTMLTAG_332___網路策略:預設拒絕 + 白名單是最佳做法 ___HTMLTAG_335__HTMLTAG_336___CiliumNetworkPolicy 擴充 K8s NetworkPolicy 新增 L7 規則(HTTP、gRPC、Kafka) ___HTMLTAG_339__HTMLTAG_340___cilium 連線測試__HTMLTAG_341___:執行 46 項測試以自動驗證網路

🎯 練習

練習 1:安裝 Cilium

  • 安裝 Helm,使用 kubeProxyReplacement 安裝 Cilium
  • 驗證所有節點就緒
  • 執行 cilium 狀態和 cilium 連線測試

練習 2:網路策略實驗室

  • 建立命名空間並部署 3 個 Pod(前端、後端、資料庫)
  • 應用預設拒絕所有
  • 建立策略:前端→後端 (HTTP GET),後端→資料庫 (TCP 5432)
  • 驗證只有授權流量才有效

📚 下一篇文章

在 第 9 課:MetalLB — 適用於本地的 LoadBalancer 中,我們將安裝 MetalLB 以在叢集外部公開類型為 LoadBalancer 的服務。