eBPF Cilium實戰(2) - 底層網路可觀測性
在之前的平臺中,對於元件之間的網路流向不具備直接的可觀測性,使用者元件間通訊出現問題,只能透過傳統命令列工具進行手動排查,而 cilium 的 Hubble 服務可以提供 UI 介面向使用者展示實時的流量狀態,同時可以將這些指標暴露給 Prometheus 進行聚合整理,讓使用者可以更直觀的對底層網路狀態進行觀測監控。
### 開啟 Hubble UI 服務
cilium 的網路可觀測性由 Hubble 服務提供,在安裝 cilium 時,預設不會安裝 Hubble ,可以透過以下命令開啟 Hubble 服務
```bash
helm upgrade cilium cilium/cilium --version 1.11.2 \
--namespace kube-system \
--reuse-values \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true
```
部署完成後,可以透過以下命令確定狀態
```bash
$ kubectl get po -n kube-system |grep hubble
hubble-relay-65ff5f9bf6-247pt 1/1 Running 0 5d19h
hubble-ui-5f7cdc86c7-gq5hs 3/3 Running 0 5d19h
$ kubectl get svc -n kube-system | grep hubble
hubble-relay ClusterIP 10.43.73.95 <none> 80/TCP 5d19h
hubble-ui ClusterIP 10.43.20.190 <none> 80/TCP 5d19h
```
Hubble 部署完成後,叢集外部還無法直接訪問,可以透過以下方式開啟對外訪問
- 臨時開啟
執行命令時可以透過 `IP:12000` 訪問 UI 介面,退出命令後無法繼續訪問
```bash
cilium hubble ui
```
- 長期開啟
透過 Rainbond 平臺新增第三方元件的方式,隨時開啟或關閉 UI 介面的訪問入口
![]()
![]()
![]()
### Hubble UI 展示資訊
訪問主頁面
![]()
進入需要檢視的名稱空間,頁面中部展示當前的流量拓撲,下部展示流量記錄
![]()
點選流量記錄可以檢視詳情
![]()
點選元件後只展示相關流量
![]()
選擇流量記錄展示的資訊列
![]()
選擇展示的流量型別
![]()
選擇展示時是否忽略特殊型別流量
![]()
### 對接 Prometheus 和 Grafana
cilium 提供了部署 Prometheus 和 Grafana 的 yaml 檔案,其中包含了 Grafana 的模板檔案,但 cilium 預設安裝的情況下沒有開放監控指標,所以需要先開啟監控指標後再部署 Prometheus 和 Grafana
開啟監控指標
```bash
helm upgrade cilium cilium/cilium --version 1.11.2 \
--namespace kube-system \
--reuse-values \
--set prometheus.enabled=true \
--set operator.prometheus.enabled=true \
--set hubble.enabled=true \
--set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,icmp,http}"
```
部署 Prometheus 和 Grafana
```bash
$ kubectl apply -f
namespace/cilium-monitoring created
serviceaccount/prometheus-k8s created
configmap/grafana-config created
configmap/grafana-cilium-dashboard created
configmap/grafana-cilium-operator-dashboard created
configmap/grafana-hubble-dashboard created
configmap/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus unchanged
clusterrolebinding.rbac.authorization.k8s.io/prometheus unchanged
service/grafana created
service/prometheus created
deployment.apps/grafana created
deployment.apps/prometheus created
```
確認執行狀態
```bash
$ kubectl get po -n cilium-monitoring
NAME READY STATUS RESTARTS AGE
grafana-d69c97b9b-5ztrj 1/1 Running 0 5d20h
prometheus-655fb888d7-456n4 1/1 Running 0 5d20h
$ kubectl get svc -n cilium-monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 10.43.230.15 <none> 3000/TCP 5d20h
prometheus ClusterIP 10.43.219.180 <none> 9090/TCP 5d20h
```
開啟對外訪問
- 臨時開啟
```bash
kubectl -n cilium-monitoring port-forward service/grafana --address 0.0.0.0 --address :: 3000:3000
kubectl -n cilium-monitoring port-forward service/prometheus --address 0.0.0.0 --address :: 9090:9090
```
- 長期開啟
![]()
![]()
![]()
![]()
Grafana 展示資訊
Cilium Metrics
![]()
Cilium Operator
![]()
Hubble
![]()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008902/viewspace-2886504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- K8s 應用的網路可觀測性: Cilium VS DeepFlowK8S
- eBPF Cilium實戰(1) - 基於團隊的網路隔離eBPF
- .Net微服務實戰之可觀測性微服務
- Kubernetes 網路學習之 Cilium 與 eBPFeBPF
- 基於 eBPF 的 Kubernetes 可觀測實踐eBPF
- 可觀測性建設路線圖
- 什麼是革命性技術eBPF?為什麼可觀測性領域都得用它eBPF
- 深度解析|基於 eBPF 的 Kubernetes 一站式可觀測性系統eBPF
- 使用 OpenTelemetry 的 .NET 可觀測性
- Dubbo 可觀測性實踐之 Metrics 功能解析
- Obsuite:混合雲可觀測性中臺UI
- 深入理解LLM的可觀測性
- eBPF in kubernetes 實戰eBPF
- 雲原生閘道器的可觀測性體系實踐
- 技術解密Java Chassis 3超實用的可觀測性解密Java
- iOS窺探KVO底層實現實戰篇iOS
- 開源可觀測性平臺SigNoz
- 基於雲原生閘道器的可觀測性最佳實踐
- 規則引擎整合新的可觀測性框架框架
- 幾個 iOS 端底層網路問題iOS
- 利用觀測雲實現 Kubernetes 多叢集可觀測
- 阿里雲日誌服務SLS攜手觀測雲釋出可觀測性解決方案,共建可觀測應用創新阿里
- 手把手教你學Dapr - 9. 可觀測性
- 淺談微服務的發展以及可觀測性微服務
- 容器網路Cilium:DualStack雙棧特性分析
- 可觀測實踐|如何使用阿里雲 Prometheus 觀測 ECS 應用阿里Prometheus
- 可觀測實踐|如何利用 Prometheus 精細化觀測雲產品Prometheus
- 深層神經網路2神經網路
- ARMS助力羽如貿易打造全鏈路可觀測最佳實踐
- 阿里云云原生微服務可觀測實踐阿里微服務
- 【雜談】從底層看鎖的實現2
- 淺談彈性計算管控可觀測性體系建設
- Serverless 可觀測性的過去、現在與未來Server
- 靈感觸發:網路底層安全解決方案
- 混沌實踐訪談:混沌工程和系統可觀測性密不可分
- 終極套娃 2.0|雲原生 PaaS 平臺的可觀測性實踐分享
- 基調聽雲釋出“觀雲”和“安雲”,打出“可觀測性+安全”牌
- 【Learning eBPF-2】eBPF 的“Hello world”eBPF