摘要:出現后,新的監控架構將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數據,再由提供給控制器等使用。本文為容器監控實踐系列文章,完整內容見
概述
從 v1.8 開始,資源使用情況的監控可以通過 Metrics API的形式獲取,具體的組件為Metrics Server,用來替換之前的heapster,heapster從1.11開始逐漸被廢棄。
Metrics-Server是集群核心監控數據的聚合器,從 Kubernetes1.8 開始,它作為一個 Deployment對象默認部署在由kube-up.sh腳本創建的集群中,如果是其他部署方式需要多帶帶安裝,或者咨詢對應的云廠商。
Metrics API介紹Metrics-Server之前,必須要提一下Metrics API的概念
Metrics API相比于之前的監控采集方式(hepaster)是一種新的思路,官方希望核心指標的監控應該是穩定的,版本可控的,且可以直接被用戶訪問(例如通過使用 kubectl top 命令),或由集群中的控制器使用(如HPA),和其他的Kubernetes APIs一樣。
官方廢棄heapster項目,就是為了將核心資源監控作為一等公民對待,即像pod、service那樣直接通過api-server或者client直接訪問,不再是安裝一個hepater來匯聚且由heapster多帶帶管理。
假設每個pod和node我們收集10個指標,從k8s的1.6開始,支持5000節點,每個節點30個pod,假設采集粒度為1分鐘一次,則:
10 x 5000 x 30 / 60 = 25000 平均每分鐘2萬多個采集指標
因為k8s的api-server將所有的數據持久化到了etcd中,顯然k8s本身不能處理這種頻率的采集,而且這種監控數據變化快且都是臨時數據,因此需要有一個組件多帶帶處理他們,k8s版本只存放部分在內存中,于是metric-server的概念誕生了。
其實hepaster已經有暴露了api,但是用戶和Kubernetes的其他組件必須通過master proxy的方式才能訪問到,且heapster的接口不像api-server一樣,有完整的鑒權以及client集成。這個api現在還在alpha階段(18年8月),希望能到GA階段。類api-server風格的寫法:generic apiserver
有了Metrics Server組件,也采集到了該有的數據,也暴露了api,但因為api要統一,如何將請求到api-server的/apis/metrics請求轉發給Metrics Server呢,解決方案就是:kube-aggregator,在k8s的1.7中已經完成,之前Metrics Server一直沒有面世,就是耽誤在了kube-aggregator這一步。
kube-aggregator(聚合api)主要提供:
Provide an API for registering API servers.
Summarize discovery information from all the servers.
Proxy client requests to individual servers.
詳細設計文檔:參考鏈接
metric api的使用:
Metrics API 只可以查詢當前的度量數據,并不保存歷史數據
Metrics API URI 為 /apis/metrics.k8s.io/,在 k8s.io/metrics 維護
必須部署 metrics-server 才能使用該 API,metrics-server 通過調用 Kubelet Summary 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/Metrics-Serverhttp://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespace/ /pods/
Metrics server定時從Kubelet的Summary API(類似/ap1/v1/nodes/nodename/stats/summary)采集指標信息,這些聚合過的數據將存儲在內存中,且以metric-api的形式暴露出去。
Metrics server復用了api-server的庫來實現自己的功能,比如鑒權、版本等,為了實現將數據存放在內存中嗎,去掉了默認的etcd存儲,引入了內存存儲(即實現Storage interface)。因為存放在內存中,因此監控數據是沒有持久化的,可以通過第三方存儲來拓展,這個和heapster是一致的。
Metrics server出現后,新的?Kubernetes 監控架構將變成上圖的樣子
核心流程(黑色部分):這是 Kubernetes正常工作所需要的核心度量,從 Kubelet、cAdvisor 等獲取度量數據,再由metrics-server提供給 Dashboard、HPA 控制器等使用。
監控流程(藍色部分):基于核心度量構建的監控流程,比如 Prometheus 可以從 metrics-server 獲取核心度量,從其他數據源(如 Node Exporter 等)獲取非核心度量,再基于它們構建監控告警系統。
官方地址:https://github.com/kubernetes...
使用如上文提到的,metric-server是擴展的apiserver,依賴于kube-aggregator,因此需要在apiserver中開啟相關參數。
--requestheader-client-ca-file=/etc/kubernetes/certs/proxy-ca.crt --proxy-client-cert-file=/etc/kubernetes/certs/proxy.crt --proxy-client-key-file=/etc/kubernetes/certs/proxy.key --requestheader-allowed-names=aggregator --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User
安裝文件下載地址:1.8+,注意更換鏡像地址為國內鏡像
kubectl create -f metric-server/
安裝成功后,訪問地址api地址為:
Metrics Server的資源占用量會隨著集群中的Pod數量的不斷增長而不斷上升,因此需要
addon-resizer垂直擴縮這個容器。addon-resizer依據集群中節點的數量線性地擴展Metrics Server,以保證其能夠有能力提供完整的metrics API服務。具體參考:鏈接
基于Metrics Server的HPA:參考鏈接
kubernetes的新監控體系中,metrics-server屬于Core metrics(核心指標),提供API metrics.k8s.io,僅提供Node和Pod的CPU和內存使用情況。而其他Custom Metrics(自定義指標)由Prometheus等組件來完成,后續文章將對自定義指標進行解析。
本文為容器監控實踐系列文章,完整內容見:container-monitor-book
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32850.html
摘要:出現后,新的監控架構將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數據,再由提供給控制器等使用。本文為容器監控實踐系列文章,完整內容見 概述 從 v1.8 開始,資源使用情況的監控可以通過 Metrics API的形式獲取,具體的組件為Metrics Server,用來替換之前的heapster,heapster從1.11開始逐漸被廢棄。 Metrics-S...
摘要:功能提供的指標,按照階段分為三種類別實驗性質的中階段的或者的字段。穩定版本的中不向后兼容的主要版本的更新被廢棄的已經不在維護的。通過比較來保證的順序并不保證包含所有資源本文為容器監控實踐系列文章,完整內容見 概述 已經有了cadvisor、heapster、metric-server,幾乎容器運行的所有指標都能拿到,但是下面這種情況卻無能為力: 我調度了多少個replicas?現在可...
摘要:功能提供的指標,按照階段分為三種類別實驗性質的中階段的或者的字段。穩定版本的中不向后兼容的主要版本的更新被廢棄的已經不在維護的。通過比較來保證的順序并不保證包含所有資源本文為容器監控實踐系列文章,完整內容見 概述 已經有了cadvisor、heapster、metric-server,幾乎容器運行的所有指標都能拿到,但是下面這種情況卻無能為力: 我調度了多少個replicas?現在可...
摘要:自定義指標由提供,由此可支持任意采集到的指標。文件清單的,收集級別的監控數據監控服務端,從拉數據并存儲為時序數據。本文為容器監控實踐系列文章,完整內容見 概述 上文metric-server提到,kubernetes的監控指標分為兩種: Core metrics(核心指標):從 Kubelet、cAdvisor 等獲取度量數據,再由metrics-server提供給 Dashboar...
摘要:自定義指標由提供,由此可支持任意采集到的指標。文件清單的,收集級別的監控數據監控服務端,從拉數據并存儲為時序數據。本文為容器監控實踐系列文章,完整內容見 概述 上文metric-server提到,kubernetes的監控指標分為兩種: Core metrics(核心指標):從 Kubelet、cAdvisor 等獲取度量數據,再由metrics-server提供給 Dashboar...
閱讀 1554·2021-11-19 09:55
閱讀 2778·2021-09-06 15:02
閱讀 3534·2019-08-30 15:53
閱讀 1071·2019-08-29 16:36
閱讀 1230·2019-08-29 16:29
閱讀 2286·2019-08-29 15:21
閱讀 621·2019-08-29 13:45
閱讀 2679·2019-08-26 17:15