新聞中心
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)DT」,作者Brendan Burns。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)DT公眾號。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、建水網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、電子商務(wù)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為建水等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Kubernetes集群由控制平面和工作節(jié)點兩類組件組成??刂破矫姘ˋPI Server、etcd、Scheduler以及Controller Manager。工作節(jié)點則包括kubelet、Container Runtime、kube-proxy、kube-dns以及Pod。你需要監(jiān)控所有這些組件以確保集群和應(yīng)用程序的正常運行。
Kubernetes通過多種方式暴露這些組件的指標,讓我們看看可以使用哪些不同的組件來采集集群的指標。
1. cAdvisor
Container Advisor(或者稱為cAdvisor)是一個開源項目,用來采集節(jié)點上容器的資源使用情況和指標。cAdvisor內(nèi)置在kubelet中,kubelet運行在集群中的每個節(jié)點上。它通過Linux cgroups(Control Group,控制組)來收集內(nèi)存和CPU指標。
cgroups是Linux內(nèi)核的一個功能,用來隔離諸如CPU、磁盤I/O或者網(wǎng)絡(luò)I/O等資源。cAdvisor也會通過Linux內(nèi)核內(nèi)置的statfs來收集磁盤指標。你不需要關(guān)心這些技術(shù)的實現(xiàn)細節(jié),但是應(yīng)該理解這些指標是如何暴露的,以及你需要采集什么類型的信息。最后,你應(yīng)該將cAdvisor視為所有容器指標的可信來源。
2. Metrics Server
Kubernetes Metrics Server和Metrics Server API替代了棄用的Heapster。Heapster在數(shù)據(jù)接收器的架構(gòu)上存在一些缺陷,導(dǎo)致在Heapster的核心代碼中引入了大量的供應(yīng)商解決方案。
這個問題最終通過在Kubernetes中將Resource Metrics API(資源指標API)和Custom Metrics API(自定義指標API)實現(xiàn)成一個聚合API而得到解決。這樣就可以在不改變API的情況下切換不同的實現(xiàn)。
Metrics Server API和Metrics Server有兩個方面需要理解。
首先,Metrics Server是 Resource Metrics API的典型實現(xiàn),它通過kubelet的API采集諸如CPU和內(nèi)存這類資源的指標,并將其存儲在內(nèi)存中以供Kubernetes Scheduler、HPA(Horizontal Pod Autoscaler)以及VPA(Vertical Pod Autoscaler)使用。
其次,Custom Metrics API 允許監(jiān)控系統(tǒng)收集任意指標,這將允許在監(jiān)控方案中構(gòu)建自定義的適配器,將監(jiān)控范圍擴展到核心資源指標之外。
例如,Prometheus構(gòu)建了最早的自定義指標適配器之一,它可以讓你基于自定義的指標來使用HPA。這樣就可以根據(jù)場景提供更好的伸縮性,因為你可以引入諸如隊列大小這樣的指標, 并且基于這類外部指標進行縮放。
Metrics API的標準化為擴展傳統(tǒng)的CPU和內(nèi)存指標提供了更多的可能。
3. kube-state-metrics
kube-state-metrics是Kubernetes的一個附加組件,用來監(jiān)控存儲在Kubernetes中的對象。cAdvisor和Metrics Server 用于提供資源使用的詳細指標,而kube-state-metrics則關(guān)注識別集群中對象的狀態(tài)。
以下是一些kube-state-metrics可以回答的問題:
- Pod
- 有多少Pod部署在集群中?
- 有多少Pod處于掛起狀態(tài)?
- 是否有足夠的資源來滿足Pod的請求?
- Deployment
- 有多少Pod處于運行狀態(tài)或者預(yù)期的狀態(tài)?
- 有多少副本可用?
- 哪些Deployment已更新過?
- Node
- 工作節(jié)點處于什么狀態(tài)?
- 集群中分配了多少CPU?
- 是否存在不可調(diào)度的節(jié)點?
- Job
- Job是何時啟動的?
- Job是何時結(jié)束的?
- 多少Job失敗了?
在撰寫本文時,kube-state-metrics可以追蹤22種Kubernetes對象類型,這個范圍還在擴大,你可以從官方Github倉庫中找到相關(guān)文檔。
關(guān)于作者:Brendan Burns,微軟Azure的杰出工程師,也是Kubernetes開源項目的聯(lián)合創(chuàng)始人,現(xiàn)為微軟副總裁,從事云應(yīng)用的開發(fā)工作已有十多年。
Eddie Villalba,微軟商業(yè)軟件工程部門的軟件工程師,專注于開源云和Kubernetes。他幫助過許多用戶將Kubernetes 用于應(yīng)用程序。
Dave Strebel,微軟Azure的全球云原生架構(gòu)師,專注于開源云和Kubernetes。他深度參與了Kubernetes開源項目,為Kubernetes發(fā)布團隊提供幫助并領(lǐng)導(dǎo)SIG-Azure工作組。
Lachlan Evenson,微軟Azure的容器計算團隊的首席開發(fā)經(jīng)理,他通過動手實操教學(xué)和會議演講幫助許多人去了解Kubernetes。
本文摘編自《Kubernetes實戰(zhàn)》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111672128)
本文標題:Kubernetes集群中要監(jiān)控哪些組件?采集哪些指標?
文章路徑:http://www.dlmjj.cn/article/djihcgd.html


咨詢
建站咨詢
