摘要:出現(xiàn)后,新的監(jiān)控架構(gòu)將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數(shù)據(jù),再由提供給控制器等使用。本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn)
概述
從 v1.8 開(kāi)始,資源使用情況的監(jiān)控可以通過(guò) Metrics API的形式獲取,具體的組件為Metrics Server,用來(lái)替換之前的heapster,heapster從1.11開(kāi)始逐漸被廢棄。
Metrics-Server是集群核心監(jiān)控?cái)?shù)據(jù)的聚合器,從 Kubernetes1.8 開(kāi)始,它作為一個(gè) Deployment對(duì)象默認(rèn)部署在由kube-up.sh腳本創(chuàng)建的集群中,如果是其他部署方式需要多帶帶安裝,或者咨詢(xún)對(duì)應(yīng)的云廠(chǎng)商。
Metrics API介紹Metrics-Server之前,必須要提一下Metrics API的概念
Metrics API相比于之前的監(jiān)控采集方式(hepaster)是一種新的思路,官方希望核心指標(biāo)的監(jiān)控應(yīng)該是穩(wěn)定的,版本可控的,且可以直接被用戶(hù)訪(fǎng)問(wèn)(例如通過(guò)使用 kubectl top 命令),或由集群中的控制器使用(如HPA),和其他的Kubernetes APIs一樣。
官方廢棄heapster項(xiàng)目,就是為了將核心資源監(jiān)控作為一等公民對(duì)待,即像pod、service那樣直接通過(guò)api-server或者client直接訪(fǎng)問(wèn),不再是安裝一個(gè)hepater來(lái)匯聚且由heapster多帶帶管理。
假設(shè)每個(gè)pod和node我們收集10個(gè)指標(biāo),從k8s的1.6開(kāi)始,支持5000節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)30個(gè)pod,假設(shè)采集粒度為1分鐘一次,則:
10 x 5000 x 30 / 60 = 25000 平均每分鐘2萬(wàn)多個(gè)采集指標(biāo)
因?yàn)閗8s的api-server將所有的數(shù)據(jù)持久化到了etcd中,顯然k8s本身不能處理這種頻率的采集,而且這種監(jiān)控?cái)?shù)據(jù)變化快且都是臨時(shí)數(shù)據(jù),因此需要有一個(gè)組件多帶帶處理他們,k8s版本只存放部分在內(nèi)存中,于是metric-server的概念誕生了。
其實(shí)hepaster已經(jīng)有暴露了api,但是用戶(hù)和Kubernetes的其他組件必須通過(guò)master proxy的方式才能訪(fǎng)問(wèn)到,且heapster的接口不像api-server一樣,有完整的鑒權(quán)以及client集成。這個(gè)api現(xiàn)在還在alpha階段(18年8月),希望能到GA階段。類(lèi)api-server風(fēng)格的寫(xiě)法:generic apiserver
有了Metrics Server組件,也采集到了該有的數(shù)據(jù),也暴露了api,但因?yàn)閍pi要統(tǒng)一,如何將請(qǐng)求到api-server的/apis/metrics請(qǐng)求轉(zhuǎn)發(fā)給Metrics Server呢,解決方案就是:kube-aggregator,在k8s的1.7中已經(jīng)完成,之前Metrics Server一直沒(méi)有面世,就是耽誤在了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.
詳細(xì)設(shè)計(jì)文檔:參考鏈接
metric api的使用:
Metrics API 只可以查詢(xún)當(dāng)前的度量數(shù)據(jù),并不保存歷史數(shù)據(jù)
Metrics API URI 為 /apis/metrics.k8s.io/,在 k8s.io/metrics 維護(hù)
必須部署 metrics-server 才能使用該 API,metrics-server 通過(guò)調(diào)用 Kubelet Summary API 獲取數(shù)據(jù)
如:
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定時(shí)從Kubelet的Summary API(類(lèi)似/ap1/v1/nodes/nodename/stats/summary)采集指標(biāo)信息,這些聚合過(guò)的數(shù)據(jù)將存儲(chǔ)在內(nèi)存中,且以metric-api的形式暴露出去。
Metrics server復(fù)用了api-server的庫(kù)來(lái)實(shí)現(xiàn)自己的功能,比如鑒權(quán)、版本等,為了實(shí)現(xiàn)將數(shù)據(jù)存放在內(nèi)存中嗎,去掉了默認(rèn)的etcd存儲(chǔ),引入了內(nèi)存存儲(chǔ)(即實(shí)現(xiàn)Storage interface)。因?yàn)榇娣旁趦?nèi)存中,因此監(jiān)控?cái)?shù)據(jù)是沒(méi)有持久化的,可以通過(guò)第三方存儲(chǔ)來(lái)拓展,這個(gè)和heapster是一致的。
Metrics server出現(xiàn)后,新的?Kubernetes 監(jiān)控架構(gòu)將變成上圖的樣子
核心流程(黑色部分):這是 Kubernetes正常工作所需要的核心度量,從 Kubelet、cAdvisor 等獲取度量數(shù)據(jù),再由metrics-server提供給 Dashboard、HPA 控制器等使用。
監(jiān)控流程(藍(lán)色部分):基于核心度量構(gòu)建的監(jiān)控流程,比如 Prometheus 可以從 metrics-server 獲取核心度量,從其他數(shù)據(jù)源(如 Node Exporter 等)獲取非核心度量,再基于它們構(gòu)建監(jiān)控告警系統(tǒng)。
官方地址:https://github.com/kubernetes...
使用如上文提到的,metric-server是擴(kuò)展的apiserver,依賴(lài)于kube-aggregator,因此需要在apiserver中開(kāi)啟相關(guān)參數(shù)。
--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+,注意更換鏡像地址為國(guó)內(nèi)鏡像
kubectl create -f metric-server/
安裝成功后,訪(fǎng)問(wèn)地址api地址為:
Metrics Server的資源占用量會(huì)隨著集群中的Pod數(shù)量的不斷增長(zhǎng)而不斷上升,因此需要
addon-resizer垂直擴(kuò)縮這個(gè)容器。addon-resizer依據(jù)集群中節(jié)點(diǎn)的數(shù)量線(xiàn)性地?cái)U(kuò)展Metrics Server,以保證其能夠有能力提供完整的metrics API服務(wù)。具體參考:鏈接
基于Metrics Server的HPA:參考鏈接
kubernetes的新監(jiān)控體系中,metrics-server屬于Core metrics(核心指標(biāo)),提供API metrics.k8s.io,僅提供Node和Pod的CPU和內(nèi)存使用情況。而其他Custom Metrics(自定義指標(biāo))由Prometheus等組件來(lái)完成,后續(xù)文章將對(duì)自定義指標(biāo)進(jìn)行解析。
本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn):container-monitor-book
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27670.html
摘要:出現(xiàn)后,新的監(jiān)控架構(gòu)將變成上圖的樣子核心流程黑色部分這是正常工作所需要的核心度量,從等獲取度量數(shù)據(jù),再由提供給控制器等使用。本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 從 v1.8 開(kāi)始,資源使用情況的監(jiān)控可以通過(guò) Metrics API的形式獲取,具體的組件為Metrics Server,用來(lái)替換之前的heapster,heapster從1.11開(kāi)始逐漸被廢棄。 Metrics-S...
摘要:功能提供的指標(biāo),按照階段分為三種類(lèi)別實(shí)驗(yàn)性質(zhì)的中階段的或者的字段。穩(wěn)定版本的中不向后兼容的主要版本的更新被廢棄的已經(jīng)不在維護(hù)的。通過(guò)比較來(lái)保證的順序并不保證包含所有資源本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 已經(jīng)有了cadvisor、heapster、metric-server,幾乎容器運(yùn)行的所有指標(biāo)都能拿到,但是下面這種情況卻無(wú)能為力: 我調(diào)度了多少個(gè)replicas?現(xiàn)在可...
摘要:功能提供的指標(biāo),按照階段分為三種類(lèi)別實(shí)驗(yàn)性質(zhì)的中階段的或者的字段。穩(wěn)定版本的中不向后兼容的主要版本的更新被廢棄的已經(jīng)不在維護(hù)的。通過(guò)比較來(lái)保證的順序并不保證包含所有資源本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 已經(jīng)有了cadvisor、heapster、metric-server,幾乎容器運(yùn)行的所有指標(biāo)都能拿到,但是下面這種情況卻無(wú)能為力: 我調(diào)度了多少個(gè)replicas?現(xiàn)在可...
摘要:自定義指標(biāo)由提供,由此可支持任意采集到的指標(biāo)。文件清單的,收集級(jí)別的監(jiān)控?cái)?shù)據(jù)監(jiān)控服務(wù)端,從拉數(shù)據(jù)并存儲(chǔ)為時(shí)序數(shù)據(jù)。本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 上文metric-server提到,kubernetes的監(jiān)控指標(biāo)分為兩種: Core metrics(核心指標(biāo)):從 Kubelet、cAdvisor 等獲取度量數(shù)據(jù),再由metrics-server提供給 Dashboar...
摘要:自定義指標(biāo)由提供,由此可支持任意采集到的指標(biāo)。文件清單的,收集級(jí)別的監(jiān)控?cái)?shù)據(jù)監(jiān)控服務(wù)端,從拉數(shù)據(jù)并存儲(chǔ)為時(shí)序數(shù)據(jù)。本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 上文metric-server提到,kubernetes的監(jiān)控指標(biāo)分為兩種: Core metrics(核心指標(biāo)):從 Kubelet、cAdvisor 等獲取度量數(shù)據(jù),再由metrics-server提供給 Dashboar...
閱讀 2800·2021-11-22 14:44
閱讀 541·2021-11-22 12:00
閱讀 3683·2019-08-30 15:54
閱讀 1570·2019-08-29 17:15
閱讀 1898·2019-08-29 13:50
閱讀 1107·2019-08-29 13:17
閱讀 3513·2019-08-29 13:05
閱讀 1181·2019-08-29 11:31