本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 中的資源使用監控
了解應用程式在部署後的行為對於擴展應用程式和提供可靠的服務至關重要。在 Kubernetes 叢集中,可以在許多不同的層級檢查應用程式效能:容器、Pod、服務和整個叢集。作為 Kubernetes 的一部分,我們希望向使用者提供有關其運行應用程式在所有這些層級的詳細資源使用資訊。這將使使用者深入了解其應用程式的效能以及可能找到的應用程式瓶頸。這就是 Heapster 的用武之地,這是一個旨在在 Kubernetes 上提供基礎監控平台的專案。
概述
Heapster 是一個叢集範圍的監控和事件資料聚合器。它目前原生支援 Kubernetes,並且適用於所有 Kubernetes 設定。Heapster 作為 Pod 在叢集中運行,類似於任何 Kubernetes 應用程式的運行方式。Heapster Pod 發現叢集中的所有節點,並從節點的 Kubelet(機器上的 Kubernetes 代理程式)查詢使用資訊。Kubelet 本身從 cAdvisor 獲取資料。Heapster 將資訊按 Pod 以及相關標籤分組。然後,此資料會被推送到可配置的後端以進行儲存和視覺化。目前支援的後端包括 InfluxDB(搭配 Grafana 進行視覺化)、Google Cloud Monitoring 以及此處更詳細描述的許多其他後端。服務的整體架構如下所示
讓我們更詳細地了解其他一些組件。
cAdvisor
cAdvisor 是一個開源容器資源使用率和效能分析代理程式。它是專為容器而構建的,並且原生支援 Docker 容器。在 Kubernetes 中,cadvisor 已整合到 Kubelet 二進制檔案中。cAdvisor 自動發現機器中的所有容器,並收集 CPU、記憶體、檔案系統和網路使用率統計資訊。cAdvisor 還透過分析機器上的「root」容器來提供整體機器使用率。
在大多數 Kubernetes 叢集上,cAdvisor 在連接埠 4194 上為機器上的容器公開一個簡單的 UI。以下是 cAdvisor UI 的一部分快照,顯示了整體機器使用率
Kubelet
Kubelet 充當 Kubernetes 控制平面和節點之間的橋樑。它管理在機器上運行的 Pod 和容器。Kubelet 將每個 Pod 轉換為其組成的容器,並從 cAdvisor 獲取個別容器使用率統計資訊。然後,它透過 REST API 公開匯總的 Pod 資源使用率統計資訊。
儲存後端
InfluxDB 和 Grafana
具有 InfluxDB 的 Grafana 設定是在開源世界中非常流行的監控組合。InfluxDB 公開了一個易於使用的 API 來寫入和獲取時間序列資料。在大多數 Kubernetes 叢集上,Heapster 預設設定為使用此儲存後端。詳細的設定指南可以在此處找到。InfluxDB 和 Grafana 在 Pod 中運行。Pod 將自身公開為 Kubernetes 服務,Heapster 就是透過這種方式發現它的。
Grafana 容器提供 Grafana 的 UI,它提供了一個易於配置的儀表板介面。Kubernetes 的預設儀表板包含一個範例儀表板,用於監控叢集和叢集內 Pod 的資源使用率。此儀表板可以輕鬆自訂和擴展。查看 此處 InfluxDB 的儲存架構。
這是一個影片,展示如何使用 heapster、InfluxDB 和 Grafana 監控 Kubernetes 叢集
這是預設 Kubernetes Grafana 儀表板的快照,顯示了整個叢集、個別 Pod 和容器的 CPU 和記憶體使用率
Google Cloud Monitoring
Google Cloud Monitoring 是一種託管監控服務,可讓您視覺化和警示應用程式中的重要指標。可以設定 Heapster 以自動將所有收集的指標推送到 Google Cloud Monitoring。然後,這些指標可在 Cloud Monitoring Console 中使用。此儲存後端是最容易設定和維護的。監控控制台可讓您使用導出的資料輕鬆建立和自訂儀表板。
這是一個影片,展示如何設定和運行 Google Cloud Monitoring 後端的 Heapster:「https://youtube.com/embed/xSMNR2fcoLs」這是 Google Cloud Monitoring 儀表板的快照,顯示了叢集範圍的資源使用率。
試試看!
現在您已經了解了一些關於 Heapster 的知識,請隨時在您自己的叢集上試用它!Heapster 儲存庫可在 GitHub 上找到。它包含設定 Heapster 及其儲存後端的詳細說明。Heapster 預設在大多數 Kubernetes 叢集上運行,因此您可能已經擁有它了!隨時歡迎提供意見回饋。如果您遇到任何問題,請透過疑難排解管道告知我們。