昨天認識了 Cilium 這個高科技網路魔法師,今天要來學習如何使用它的「千里眼」和「順風耳」!就像現代牧場主需要監控系統來觀察牛隻的健康狀況和活動路徑,Cilium 提供了 Hubble 這個強大的觀測平台,讓我們能即時洞察網路流量的每個細節。準備好成為網路流量的偵探了嗎?
在複雜的 Kubernetes 環境中,網路問題往往最難調試。傳統的除錯方式就像拿著放大鏡在巨大的牧場裡找一根針,效率極低且容易遺漏關鍵資訊。
傳統網路除錯的痛點:
Cilium 觀測解決方案:
Hubble 就像是牧場的智慧監控中心,能夠提供網路世界的全景視圖:
核心能力:
# Hubble 的三層架構
┌─────────────────┐
│ Hubble UI │ # 網頁圖形介面
├─────────────────┤
│ Hubble Relay │ # 資料聚合和分發
├─────────────────┤
│ Hubble Observer │ # 資料收集(每個節點)
└─────────────────┘
首先在你的 MacBook 上安裝 Cilium CLI:
# 自動偵測架構並安裝最新版本
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "arm64" ]; then CLI_ARCH=arm64; fi
# 下載並驗證
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}
shasum -a 256 -c cilium-darwin-${CLI_ARCH}.tar.gz.sha256sum
# 安裝到系統路徑
sudo tar xzvfC cilium-darwin-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}
# 驗證安裝
cilium version --client
同樣在 MacBook 上安裝 Hubble 客戶端:
# 自動偵測架構並安裝最新版本
HUBBLE_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/hubble/master/stable.txt)
HUBBLE_ARCH=amd64
if [ "$(uname -m)" = "arm64" ]; then HUBBLE_ARCH=arm64; fi
# 下載並驗證
curl -L --fail --remote-name-all https://github.com/cilium/hubble/releases/download/$HUBBLE_VERSION/hubble-darwin-${HUBBLE_ARCH}.tar.gz{,.sha256sum}
shasum -a 256 -c hubble-darwin-${HUBBLE_ARCH}.tar.gz.sha256sum
# 安裝到系統路徑
sudo tar xzvfC hubble-darwin-${HUBBLE_ARCH}.tar.gz /usr/local/bin
rm hubble-darwin-${HUBBLE_ARCH}.tar.gz{,.sha256sum}
# 驗證安裝
hubble version
前提條件:Rancher 中已建立使用 Cilium CNI 的 Custom Cluster
# 1. 確認 kubectl 已連接到正確的集群
kubectl get nodes
# 2. 檢查 Cilium 是否已運行
kubectl get pods -n kube-system -l k8s-app=cilium
# 3. 驗證 Cilium CLI 能連接到集群
cilium status
輸出範例:
/¯¯\
/¯¯\__/¯¯\ Cilium: OK
\__/¯¯\__/ Operator: OK
/¯¯\__/¯¯\ Envoy DaemonSet: disabled (using embedded mode)
\__/¯¯\__/ Hubble Relay: disabled
\__/ ClusterMesh: disabled
DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2
Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2
Image versions cilium rancher/mirrored-cilium-cilium:v1.17.6: 2
cilium-operator rancher/mirrored-cilium-operator-generic:v1.17.6: 2
從輸出可以看到:
由於 Rancher 預設安裝的 Cilium 沒有啟用 Hubble,我們需要手動啟用:
方法1: 直接透過 kubectl apply 建立 HelmChartConfig(推薦)
# 直接建立 HelmChartConfig 資源啟用 Hubble
kubectl apply -f - <<EOF
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-cilium
namespace: kube-system
spec:
valuesContent: |-
hubble:
enabled: true
relay:
enabled: true
ui:
enabled: true
EOF
# 檢查狀態
cilium status
方法2: 透過編輯配置檔案
# 編輯 RKE2 的 Cilium 配置檔案
sudo vi /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
# 添加相同的 HelmChartConfig 內容,然後重啟服務
sudo systemctl restart rke2-server
啟用成功後的輸出範例:
/¯¯\
/¯¯\__/¯¯\ Cilium: OK
\__/¯¯\__/ Operator: OK
/¯¯\__/¯¯\ Envoy DaemonSet: disabled (using embedded mode)
\__/¯¯\__/ Hubble Relay: OK
\__/ ClusterMesh: disabled
DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2
Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2
Deployment hubble-relay Desired: 1, Ready: 1/1, Available: 1/1
Deployment hubble-ui Desired: 1, Ready: 1/1, Available: 1/1
Containers: cilium Running: 2
cilium-operator Running: 2
hubble-relay Running: 1
hubble-ui Running: 1
Cluster Pods: 14/14 managed by Cilium
注意變化:
現在我們可以開始使用 Hubble 觀測網路流量:
# 檢查 Hubble 狀態
hubble status
# 觀察即時網路流量
hubble observe
# 查看特定命名空間的流量
hubble observe --namespace default
# 觀察被拒絕的連線(網路策略效果)
hubble observe --verdict DROPPED
# 檢查 Cilium 整體狀態
cilium status
# 檢查連通性(基本網路測試)
cilium connectivity test --test-namespace default
# 查看 Cilium 配置
cilium config view
有了 Hubble 和 Cilium CLI,我們就能:
這些基本功能為後續的網路策略設定和故障排除奠定了基礎。
今天我們掌握了 Cilium 的觀測和除錯工具!從 Hubble 的即時流量監控,到 Tetragon 的安全觀測,再到 Cilium CLI 的除錯指令,這些工具讓網路問題無所遁形。記住,好的觀測能力是運維成功的關鍵。
明天我們將進入 Cilium Network Policy 的實戰環節,學習如何設計和實作多租戶網路隔離策略,真正發揮 Cilium L3-L7 網路策略的強大威力!
💡 牧場主小提示:Hubble 就像牧場的智慧監控系統,讓你不用親自巡視就能掌握全域狀況!記住三個觀測利器:hubble observe 看流量、cilium status 查健康、cilium connectivity test 測連通。善用這些工具,網路問題就像陽光下的影子,無處躲藏!