Metrics
Last updated
Last updated
從 v1.8 開始,資源使用情況的度量(如容器的 CPU 和內存使用)可以通過 Metrics API 獲取。注意
Metrics API 只可以查詢當前的度量數據,並不保存歷史數據
Metrics API URI 爲 /apis/metrics.k8s.io/
,在 k8s.io/metrics 維護
必須部署 metrics-server
才能使用該 API,metrics-server 通過調用 Kubelet Summary API 獲取數據
Kubernetes 監控架構由以下兩部分組成:
核心度量流程(下圖黑色部分):這是 Kubernetes 正常工作所需要的核心度量,從 Kubelet、cAdvisor 等獲取度量數據,再由 metrics-server 提供給 Dashboard、HPA 控制器等使用。
監控流程(下圖藍色部分):基於核心度量構建的監控流程,比如 Prometheus 可以從 metrics-server 獲取核心度量,從其他數據源(如 Node Exporter 等)獲取非核心度量,再基於它們構建監控告警系統。
在部署 metrics-server 之前,需要在 kube-apiserver 中開啓 API Aggregation,即增加以下配置
如果kube-proxy沒有在Master上面運行,還需要配置
稍後就可以看到 metrics-server 運行起來:
可以通過 kubectl proxy
來訪問 Metrics API:
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes/<node-name>
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/pods
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespaces/<namespace-name>/pods/<pod-name>
也可以直接通過 kubectl 命令來訪問這些 API,比如
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/<node-name>
kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/<namespace-name>/pods/<pod-name>
如果發現 metrics-server Pod 無法正常啓動,比如處於 CrashLoopBackOff 狀態,並且 restartCount 在不停增加,則很有可能是其跟 kube-apiserver 通信有問題。查看該 Pod 的日誌,可以發現
解決方法是: