使用容器深入解析監視 Kubernetes 叢集效能
使用容器深入解析中的活頁簿、效能圖表和健全狀態,監視裝載於 Azure Kubernetes Service (AKS)、Azure Stack 或另一個環境的 Kubernetes 叢集工作負載。 本文可協助您了解如何使用 Azure 監視器來幫助您快速評估、調查和解決偵測到的問題。
活頁簿
活頁簿會將文字、記錄查詢、計量和參數合併成豐富的互動式報表,您可用來分析叢集效能。 如需容器深入解析可用的活頁簿描述,以及如何存取,請參閱容器深入解析中的活頁簿。
Azure 監視器中的多叢集檢視
Azure 監視器提供多叢集檢視,可顯示您訂用帳戶中跨資源群組部署的所有受監視 Kubernetes 叢集的健全狀態。 它也會顯示在解決方案未監視之所有環境中所探索到的叢集。 透過此檢視,您可以立即了解叢集健康情況,並向下切入到節點和控制器效能頁面,或者瀏覽以查看叢集的效能圖表。 對於已探索到且識別為未受監視的 AKS 叢集,您可以從檢視啟用監視。
若要存取多重叢集檢視,請在 Azure 入口網站的左窗格中選取 [監視]。 在 [Insights] 區段下方,選取 [容器]。
您可以設定呈現在格線中的結果範圍,以顯示下列叢集:
- Azure:裝載於 Azure Kubernetes Service 的 AKS 和 AKS-Engine 叢集。
- Azure Stack (預覽):裝載於 Azure Stack 的 AKS-Engine 叢集。
- 非 Azure (預覽):裝載於內部部署環境的 Kubernetes 叢集。
- 全部:檢視裝載於 Azure、Azure Stack 和內部部署環境,且已在容器深入解析中上架的所有 Kubernetes 叢集。
若要從特定環境檢視叢集,請從左上角的 [環境] 中加以選取。
在 [受監視的叢集] 索引標籤上,您可以了解下列內容:
- 有多少個叢集處於重大或狀況不良狀態,以及有多少個叢集的狀況良好或未報告 (稱為未知狀態)。
- 所有 Azure Kubernetes Engine (AKS 引擎) 部署的健康情況是否良好。
- 每個叢集部署了幾個節點和使用者以及系統 Pod。
所包含的健全狀態為:
- 良好:VM 未偵測到任何問題,且如預期運作。
- 重大:偵測到一或多個重大問題,必須解決問題才能還原預期的正常作業狀態。
- 警告:偵測到一或多個問題,必須解決問題,否則健康情況條件可能會變得危急。
- 未知:若服務無法與節點或 Pod 連線,則狀態會變更為 [未知] 狀態。
- 找不到:工作區、資源群組或包含此解決方案工作區的訂用帳戶已遭刪除。
- 未經授權:使用者沒有必要權限,無法讀取工作區中的資料。
- 錯誤:嘗試從工作區讀取資料時發生錯誤。
- 設定錯誤:未在指定的工作區中正確設定容器深入解析。
- 沒有資料:過去 30 分鐘尚未向工作區報告資料。
健全狀態會計算整體叢集狀態後,顯示其中三個最差狀態,但有一個情況例外。 如果三種狀態中任何一種為 [未知],則整體叢集狀態會顯示 [未知]。
下表提供計算明細,會控制多重叢集檢視上受監視叢集的健全狀態。
受監視的叢集 | 狀態 | 可用性 |
---|---|---|
使用者 Pod | Healthy 警告 重大 未知 |
100% 90 - 99% <90% 未在過去 30 分鐘內報告 |
系統 Pod | Healthy 警告 重大 未知 |
100% N/A 100% 未在過去 30 分鐘內報告 |
節點 | Healthy 警告 重大 未知 |
>85% 60 - 84% <60% 未在過去 30 分鐘內報告 |
您可以從叢集清單選取叢集的名稱,向下切入至 [叢集] 頁面。 然後在該特定叢集的 [節點] 資料行中選取節點彙總,以移至 [節點] 效能頁面。 或者,您可以選取 [使用者 Pod] 或 [系統 Pod] 資料行彙總,藉此向下切入至 [控制器] 效能頁面。
直接從叢集檢視效能
從左窗格中選取 [深入解析]>[叢集],或從多叢集檢視選取叢集時,即可直接從 AKS 叢集存取容器深入解析。 叢集的相關資訊共分成四個檢視方塊:
- Cluster
- 節點
- Controllers
- 容器
注意
本文其餘部分所描述的體驗也適用於從多叢集檢視中選取時,檢視裝載於 Azure Stack 或另一個環境的 Kubernetes 叢集效能和健全狀態。
預設頁面隨即開啟,並顯示四個效能折線圖,其中顯示叢集的主要效能計量。
效能圖表會顯示四個效能計量:
- 節點 CPU 使用率 (%):整個叢集中 CPU 使用率的彙總檢視方塊。 若要篩選時間範圍的結果,請選取圖表上方百分位數選取器中的 [平均]、[最小]、[第 50]、[第 90]、[第 95] 或 [最大]。 這些篩選條件可以個別使用,也可以合併使用。
- 節點記憶體使用率 (%):整個叢集中記憶體使用率的彙總檢視方塊。 若要篩選時間範圍的結果,請選取圖表上方百分位數選取器中的 [平均]、[最小]、[第 50]、[第 90]、[第 95] 或 [最大]。 這些篩選條件可以個別使用,也可以合併使用。
- 節點計數:Kubernetes 中的節點計數和狀態。 叢集節點狀態以 [總計]、[就緒] 和 [未就緒] 表示。 您可以使用圖表上方的選取器,個別或合併使用篩選條件進行篩選。
- 使用中 Pod 計數:Kubernetes 中的 Pod 計數和狀態。 Pod 狀態會以 [總計]、[擱置]、[執行中]、[未知]、[成功] 或 [失敗] 表示。 您可以使用圖表上方的選取器,個別或合併使用篩選條件進行篩選。
使用向左鍵和向右鍵來輪流查看圖表上的每一個資料點。 使用向上鍵和向下鍵來輪流查看百分位數行。 按一下任一圖表右上角的釘選圖示,即可將選取的圖表釘選至您所檢視的最後一個 Azure 儀表板。 您可以在儀表板中調整圖表大小,並重新置放圖表。 從儀表板選取圖表會將您重新導向到容器深入解析,並載入正確的範圍和檢視。
容器深入解析也支援 Azure 監視器的計量瀏覽器,您可以在其中建立自己的繪圖圖表、相互關聯和調查趨勢,然後釘選到儀表板。 在計量瀏覽器中,您也可以使用您設定的準則,將計量以視覺效果呈現,做為計量型警示規則的基礎。
在計量瀏覽器中檢視容器計量
在計量瀏覽器中,您可以從容器深入解析檢視彙總的節點和 Pod 使用率計量。 下表摘要說明詳細資料,以協助您了解如何使用計量圖表,以視覺效果呈現容器計量。
Namespace | 計量 | 描述 |
---|---|---|
insights.container/nodes | ||
cpuUsageMillicores | 整個叢集的 CPU 使用率彙總測量, 即將 CPU 核心分割成 1,000 個單位 (milli = 1000)。 用來判斷容器中的核心使用率,該容器可能有許多應用程式使用一個核心。 | |
cpuUsagePercentage | 彙總的平均 CPU 使用率,以整個叢集的百分比為單位。 | |
memoryRssBytes | 已使用的容器 RSS 記憶體,以位元組為單位。 | |
memoryRssPercentage | 已使用的容器 RSS 記憶體,以百分比為單位。 | |
memoryWorkingSetBytes | 已使用的容器工作集記憶體。 | |
memoryWorkingSetPercentage | 已使用的容器工作集記憶體,以百分比為單位。 | |
nodesCount | Kubernetes 中的節點計數。 | |
insights.container/pods | ||
PodCount | Kubernetes 中的 Pod 計數。 |
您可以分割計量,依維度進行檢視並以視覺效果呈現各區段彼此間的差異。 對於節點,您可以按照主機維度來劃分圖表區段。 對於 Pod,您可以按照下列維度來劃分區段:
- 控制器
- Kubernetes 命名空間
- 節點
- 階段
分析節點、控制器和容器健康情況
當您切換至 [節點]、[控制器] 和 [容器] 索引標籤時,頁面右邊會自動顯示屬性窗格。 此窗格會顯示所選項目的屬性,包括您為了組織 Kubernetes 物件而定義的標籤。 選取 Linux 節點時,[本機磁碟容量] 區段也會顯示可用磁碟空間,以及提供給節點的每一個磁碟使用百比。 在窗格中選取 >> 連結,以檢視或隱藏此窗格。
當您展開階層中的物件時,屬性窗格會根據所選的物件更新。 從窗格中,您也可以選取窗格頂端的 [即時事件] 索引標籤,以檢視 Kubernetes 容器記錄 (stdout/stderror)、事件和 Pod 計量。 若要進一步了解授與和控制檢視此資料的存取權所需設定,請參閱設定即時資料。
當您檢閱叢集資源時,可以即時查看容器的這項資料。 如需此功能的詳細資訊,請參閱如何即時檢視 Kubernetes 記錄、事件和 Pod 計量。
若要根據預先定義的記錄搜尋來檢視儲存在工作區中的 Kubernetes 記錄資料,請從 [在分析中檢視] 下拉清單選取 [檢視容器記錄]。 如需詳細資訊,請參閱如何從容器深入解析查詢記錄。
使用頁面頂端的 [+ 新增篩選] 選項,依 [服務]、[節點]、[命名空間] 或 [節點集區] 篩選檢視的結果。 選取篩選範圍之後,請選取 [選取值] 欄位中顯示的其中一個值。 設定篩選器之後,就會在檢視 AKS 叢集的任一個檢視方塊時全域套用。 此公式僅支援等號。 您可以在第一個篩選器上方新增更多篩選器,進一步縮小您的結果。 例如,如果您指定依 [節點]篩選,則第二個篩選器只能選取 [服務] 或 [命名空間]。
以 Tab 鍵選取篩選器時,會在您選取另一個篩選器時繼續套用第一個篩選器。 在您選取指定篩選器旁邊的 x 符號之後,即會刪除該篩選器。
切換至 [節點] 索引標籤,而資料列階層會依循 Kubernetes 物件模型,從您叢集中的節點開始。 展開節點以檢視一或多個在節點上執行的 Pod。 若有超過一個容器被分組至 Pod,它們會以最後一個資料列的形式顯示於階層中。 當主機有處理器或記憶體的壓力時,您也可檢視主機上有多少非 Pod 相關的工作負載正在執行。
執行 Windows Server 2019 OS 的 Windows Server 容器會顯示在清單中所有 Linux 型節點的後面。 當您展開 Windows Server 節點時,可以檢視在該節點上執行的一或多個 Pod 和容器。 選取節點之後,[屬性] 窗格會顯示版本資訊。
執行 Linux OS 的 Azure 容器執行個體虛擬節點會顯示在清單中最後一個 AKS 叢集節點的後面。 當您展開容器執行個體虛擬節點時,可以檢視在該節點上執行的一或多個容器執行個體 Pod 和容器。 系統不會收集和報告節點的計量,僅會針對 Pod 進行。
從展開的節點中,您可以從在該節點上執行的 Pod 或容器向下切入到控制器,以檢視針對該控制器篩選出來的效能資料。 在該特定節點的 [控制器] 資料行下方,選取值。
在頁面頂端選取控制器或容器,以檢閱物件的狀態與資源使用率。 若要檢閱記憶體使用率,請在 [計量] 下拉式清單中選取 [記憶體 RSS] 或 [記憶體工作集]。 只有 Kubernetes 1.8 版和更新版本才支援記憶體 RSS。 否則,您會以 NaN % 的形式檢視 Min % 的值,這是一個數值資料類型值,代表未定義或無法顯示的值。
記憶體工作集顯示所包含的常駐記憶體和虛擬記憶體 (快取),而且是應用程式正在使用的記憶體總計。 記憶體 RSS 只會顯示主要記憶體 (只顯示常駐記憶體)。 此計量會顯示可用記憶體的實際容量。 常駐記憶體和虛擬記憶體之間的差異為何?
- 常駐記憶體或主要記憶體是叢集節點可以使用的電腦記憶體實際數量。
- 虛擬記憶體是保留的硬碟空間 (快取),讓作業系統可以在記憶體容量不足時將資料從記憶體交換到磁碟,然後在需要時擷取回記憶體。
根據預設,效能資料是以過去六小時的資料為基礎,但您可以使用左上方的 [時間範圍] 選項來變更時間長度。 您也可以在百分位數選取器中選取 [最小]、[平均]、[第 50]、[第 90]、[第 95] 和 [最大],來篩選時間範圍內的結果。
當您將滑鼠暫留在 [趨勢] 資料行底下的長條圖上方時,每個長條圖都會依據所選取的計量,在 15 分鐘的取樣期間內顯示 CPU 或記憶體使用量。 使用鍵盤選取趨勢圖之後,請使用 Alt+Page Up 鍵或 Alt+Page Down 鍵,輪流查看每一個橫條。 如果您將滑鼠暫留在橫條上,就會得到相同的詳細資料。
在下一個範例中,清單中第一個節點 aks-nodepool1- 的 [容器] 值是 25。 此值是已部署的容器總數彙總。
此資訊可幫助您快速識別叢集節點之間的容器是否保持適當的平衡。
下表說明當您檢視節點索引標籤時顯示的資訊。
資料行 | 描述 |
---|---|
Name | 主機的名稱。 |
狀態 | 節點狀態的 Kubernetes 檢視。 |
最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 根據選取期間內百分位數的平均節點百分比。 |
最小、平均、第 50、第 90、第 95、最大 | 根據所選取時間的期間內百分位數的平均節點實際值。 平均值是依據為節點設定的 CPU/記憶體限制測量所得。 若為 Pod 和容器,則是指主機所報告的平均值。 |
容器 | 容器的數目。 |
上線時間 | 呈現自節點啟動或重新啟動以來經過的時間。 |
控制器 | 僅適用於容器與 Pod。 顯示位在哪一個控制器之中。 並非所有 Pod 都位在控制器之中,因此有些可能會顯示 N/A。 |
趨勢最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 長條圖趨勢代表控制器的平均百分位數計量百分比。 |
展開名為其他流程的節點之後,您可能會注意到工作負載。 它代表在您的節點上執行的非容器化流程,且包含:
- 自我管理或受控 Kubernetes 非容器化處理序。
- 容器執行階段流程。
- Kubelet。
- 在您節點上執行的系統處理序。
- 在節點硬體或 VM 上執行的其他非 Kubernetes 工作負載。
計算方式是 CAdvisor 的總使用量 - 容器化流程的使用量。
在選取器中,選取 [控制器]。
您可以在此處檢視控制器的效能健康情況,以及未連線到控制器的容器執行個體虛擬節點控制器或虛擬節點 Pod。
資料列階層會以控制器開始。 當您展開控制器時,可以檢視一或多個 Pod。 展開 Pod,最後一個資料夾會顯示分組至 Pod 的容器。 從展開的控制器中,您可以向下切入到控制器執行所在的節點,以檢視針對該節點所篩選的效能資料。 未連線到控制器的容器執行個體會列為清單中的最後一個。
針對特定控制器,選取 [節點] 資料行下方的值。
下表說明當您檢視控制器時所顯示的資訊。
資料行 | 描述 |
---|---|
Name | 控制器的名稱。 |
狀態 | 容器執行完成後的彙總狀態,狀態為「確定」、「終止」、「失敗」、「停止」或「暫停」。 如果容器正在執行中,但狀態卻未正確顯示或未由代理程式擷取,而且超過 30 分鐘都沒有回應時,則狀態為 [未知]。 下表提供狀態圖示的更多詳細資料。 |
最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 針對所選取計量和百分位數之每個實體的平均百分比彙總平均值。 |
最小、平均、第 50、第 90、第 95、最大 | 容器針對所選取百分位數的平均 CPU millicore 或記憶體效能彙總。 平均值是從為 Pod 設定的 CPU/記憶體限制測量所得。 |
容器 | 該控制器或 Pod 的容器總數。 |
Restarts | 容器重新啟動計數的彙總。 |
上線時間 | 代表自容器啟動以來經過的時間。 |
節點 | 僅適用於容器與 Pod。 顯示位在哪一個控制器之中。 |
趨勢最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 長條圖趨勢代表控制器的平均百分位數計量。 |
[狀態] 欄位中的圖示會指出容器的線上狀態。
圖示 | 狀態 |
---|---|
執行中 | |
等候中或已暫停 | |
上次回報執行中,但已超過 30 分鐘未回應 | |
已成功停止或無法停止 |
狀態圖示會根據 Pod 所提供的功能顯示計數。 其會顯示最差的兩個狀態。 當您將滑鼠暫留在狀態上方時,會顯示容器中所有 Pod 的彙總狀態。 如果沒有就緒狀態,則狀態值會顯示 (0)。
在選取器中,選取 [容器]。
您可以在這裡檢視 AKS 和容器執行個體容器的效能健康情況。
您可以從容器向下切入到 Pod 或節點,以檢視針對該物件所篩選的效能資料。 針對特定容器,選取 [Pod] 或 [節點] 資料行下方的值。
下表說明當您檢視容器時所顯示的資訊。
資料行 | 描述 |
---|---|
Name | 控制器的名稱。 |
狀態 | 容器的狀態,若有的話。 下一個表格會提供狀態圖示的更多詳細資料。 |
最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 針對所選取計量和百分位數之每個實體的平均百分比彙總。 |
最小、平均、第 50、第 90、第 95、最大 | 容器針對所選取百分位數的平均 CPU millicore 或記憶體效能彙總。 平均值是從為 Pod 設定的 CPU/記憶體限制測量所得。 |
Pod | Pod 所在的容器。 |
節點 | 容器所在的節點。 |
Restarts | 代表自容器啟動以來經過的時間。 |
上線時間 | 代表自容器啟動或重新啟動以來經過的時間。 |
趨勢最小 %、平均 %、第 50 %、第 90 %、第 95 %、最大 % | 長條圖趨勢代表容器的平均百分位數計量百分比。 |
其他處理序
[節點] 檢視中的其他處理序項目旨在協助您清楚了解節點上高資源使用量的根本原因。 此資訊可幫助您區分容器化處理序與非容器化處理序之間的使用量。 這些是在您的節點上執行的非容器處理序,並包含下列項目:
- 自我管理或受控 Kubernetes 非容器化處理序。
- 容器執行階段流程。
- Kubelet。
- 在您節點上執行的系統處理序。
- 在節點硬體或 VM 上執行的其他非 Kubernetes 工作負載。
其他處理序的值為 Total usage from CAdvisor - Usage from containerized process
。
狀態
[狀態] 欄位中的圖示會指出 Pod 的線上狀態,如下表所述。
圖示 | 狀態 |
---|---|
等候中或已暫停 | |
上次回報的執行,但未回應的時間超過 30 分鐘 | |
已成功停止或無法停止 | |
失敗狀態 |
監視和視覺化網路設定
Azure 網路原則管理員包含資訊豐富的 Prometheus 計量,您可用來進行監視及進一步了解您的網路設定。 它會在 Azure 入口網站或 Grafana Labs 中提供內建視覺效果。 如需詳細資訊,請參閱使用 Azure npm 監視和視覺化網路設定。
下一步
- 請參閱使用容器深入解析建立效能警示,以了解如何建立高 CPU 和記憶體使用率的警示,以支援您的 DevOps 或作業流程和程序。
- 請參閱記錄查詢範例來查看預先定義的查詢和範例,以進行評估或自訂來警示、視覺化或分析您的叢集。
- 請參閱監視叢集健康情況,以了解如何檢視 Kubernetes 叢集的健全狀態。