天天看點

#yyds幹貨盤點#K8S-資源監控與資源名額

Kubernetes 系統上的關鍵名額大體可以分為兩個主要組成部分:叢集系統本身的名額和容器應用相關的名額。對于叢集系統本身相關的監控層面而言,監控整個 Kubernetes 叢集的健康狀況是最核心的需求,包括所有工作節點是否運作正常、系統資源容量大小、每個工作節點上運作的容器化應用的數量以及整個叢集的資源使用率等,它們通常可分為如下一些可衡量的名額。

1)節點資源狀态:多數名額都與節點上的系統資源利用狀況有關,例如網絡帶寬、磁盤空間、CPU 和記憶體的使用率等,它們也是管理者能夠評估叢集規模合理性的重要标準。

2)節點數量:在公有雲服務商以執行個體數量計費的場景中,根據叢集整體應用的資源需求規模實時調整叢集節點規模是常見的彈性伸縮應用場景之一,而實時了解叢集中的可用節點數量也給了使用者計算所需支付費用的參考标準。

3)活動 Pod 對象的數量:正在運作的 Pod 對象數量常用于評估可用節點的數量是否足夠,以及在節點發生故障時它們是否能夠承接整個工作負載等。

這些應用的監控需求通常可以大體分為 3 類:應用編排名額、容器名額和應用程式名額。

1)應用編排名額:用于監視特定應用程式相關的 Pod 對象的部署過程、目前副本數量、期望的副本數量、部署過程進展狀态、健康狀态監測及網絡伺服器的可用性等,這些名額資料需要經由 Kubernetes 系統接口擷取。

2)容器名額:包括容器的資源需求、資源限制以及 CPU、記憶體、磁盤空間、網絡帶寬等資源的實際占用狀況等。

3)應用程式名額:應用程式内置的名額,通常與其所處理的業務規則相關,例如,關系型資料庫應用程式可能會内置用于暴露索引狀态的名額,以及表和關系的統計名額等。監控叢集所有節點的常用方法之一是通過 DaemonSet 控制器在各節點部署一個采集監控名額資料的代理程式,由代理程式将節點級采集的各種名額資料上報至監控服務端,以統一進行資料的處理、存儲和展示。這種部署方式給了管理者很大的自主選擇空間,但也必定難以形成統一之勢。

監控叢集所有節點的常用方法之一是通過 DaemonSet 控制器在各節點部署一個采集監控名額資料的代理程式,由代理程式将節點級采集的各種名額資料上報至監控服務端,以統一進行資料的處理、存儲和展示。這種部署方式給了管理者很大的自主選擇空間,但也必定難以形成統一之勢。

新一代的 Kubernetes 監控系統架構主要由核心名額流水線和監控名額流水線共同組成。

(1)核心名額管道

由 kubelet、資源評估器、Metrics Server 以及提供關鍵名額 API 的 API Server 共同組成,它們為 Kubernetes 系統提供核心名額。Metrics Server 通過服務發現機制發現叢集上的所有節點,而後自動采集每個節點上 kubelet 的 CPU 和記憶體使用狀态。kubelet 完全能夠基于容器運作時接口擷取容器的統計資訊,同時為了能夠相容較舊版本的 Docker,它也支援從内部內建的 cAdvisor 采集資源名額資訊,這些名額資料經由 kubelet 守護程序監聽 TCP 的 10250 端口,并以隻讀方式對外提供,最終由 Metrics Server 完成聚合後對外公開。

#yyds幹貨盤點#K8S-資源監控與資源名額

截至目前,核心名額管道中的名額主要包括 CPU 累計使用、記憶體即時使用率、Pod 資源占用率及容器的磁盤占用率等。這些度量标準的核心系統元件包括排程邏輯(基于名額資料的排程程式和應用規模的水準縮放),以及部分 UI 元件(例如 kubectl top 指令和 Dashboard)等。

(2)監控管道

繼續閱讀