在之前的平臺中,對於元件之間的網路流向不具備直接的可觀測性,使用者元件間通訊出現問題,只能通過傳統命令列工具進行手動排查,而 cilium 的 Hubble 服務可以提供 UI 介面向使用者展示實時的流量狀態,同時可以將這些指標暴露給 Prometheus 進行聚合整理,讓使用者可以更直觀的對底層網路狀態進行觀測監控。
開啟 Hubble UI 服務
cilium 的網路可觀測性由 Hubble 服務提供,在安裝 cilium 時,預設不會安裝 Hubble ,可以通過以下命令開啟 Hubble 服務
helm upgrade cilium cilium/cilium --version 1.11.2 \
--namespace kube-system \
--reuse-values \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true
部署完成後,可以通過以下命令確定狀態
$ 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 介面,退出命令後無法繼續訪問cilium hubble ui
長期開啟
通過 Rainbond 平臺新增第三方元件的方式,隨時開啟或關閉 UI 介面的訪問入口
Hubble UI 展示資訊
訪問主頁面
進入需要檢視的名稱空間,頁面中部展示當前的流量拓撲,下部展示流量記錄
點選流量記錄可以檢視詳情
點選元件後只展示相關流量
選擇流量記錄展示的資訊列
選擇展示的流量型別
選擇展示時是否忽略特殊型別流量
對接 Prometheus 和 Grafana
cilium 提供了部署 Prometheus 和 Grafana 的 yaml 檔案,其中包含了 Grafana 的模板檔案,但 cilium 預設安裝的情況下沒有開放監控指標,所以需要先開啟監控指標後再部署 Prometheus 和 Grafana
開啟監控指標
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
$ kubectl apply -f https://raw.githubusercontent.com/cilium/cilium/1.11.2/examples/kubernetes/addons/prometheus/monitoring-example.yaml
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
確認執行狀態
$ 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
開啟對外訪問
臨時開啟
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