使用容器深入解析監視 Kubernetes 叢集效能

使用容器深入解析中的活頁簿、效能圖表和健全狀況狀態,監視裝載於 Azure Kubernetes Service (AKS)、Azure Stack 或其他環境的 Kubernetes 叢集工作負載。

本文可協助您瞭解這兩個觀點,以及 Azure 監視器如何協助您快速評估、調查及解決偵測到的問題。

活頁簿

活頁簿會將文字、記錄查詢、計量和參數合併成豐富的互動式報表,供您用來分析叢集效能。 如需容器深入解析可用的活頁簿描述,以及如何存取它們,請參閱 容器深入解析中的活頁簿

Azure 監視器的多叢集檢視

Azure 監視器提供多叢集檢視,顯示訂用帳戶中跨資源群組部署之所有受監視 Kubernetes 叢集的健康情況狀態。 它也會顯示在解決方案未監視的所有環境中探索到的叢集。 透過此檢視,您可以立即瞭解叢集健康情況,然後向下切入至節點和控制器效能頁面,或流覽以查看叢集的效能圖表。 針對探索並識別為未受監視的 AKS 叢集,您可以從檢視啟用監視。

若要存取多重叢集檢視,請從 Azure 入口網站 的左窗格中選取 [監視]。 在 [ 深入解析] 區段底下 ,選取 [ 容器]。

Screenshot that shows an Azure Monitor multi-cluster dashboard example.

您可以在方格中顯示的結果範圍,以顯示下列叢集:

  • Azure:裝載在 Azure Kubernetes Service 中的 AKS 和 AKS 引擎叢集。
  • Azure Stack (預覽):裝載在 Azure Stack 上的 AKS 引擎叢集。
  • 非 Azure (預覽):裝載於內部部署的 Kubernetes 叢集。
  • 全部:檢視裝載在 Azure、Azure Stack 和內部部署環境中的所有 Kubernetes 叢集,這些叢集已上線至容器深入解析。

若要從特定環境檢視叢集,請從左上角的環境選取叢集。

Screenshot that shows an Environment selector example.

在 [ 受監視的叢集] 索引標籤上 ,您將瞭解下列內容:

  • 有多少叢集處於重大或狀況不良狀態,以及有多少叢集狀況良好或未報告(稱為未知狀態)。
  • 所有 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 叢集的效能和健康情況狀態。

默認頁面隨即開啟,並顯示四個折線效能圖表,以顯示叢集的關鍵效能計量。

Screenshot that shows example performance charts on the Cluster tab.

效能圖表會顯示四個效能計量:

  • 節點 CPU 使用率 %:整個叢集 CPU 使用率的匯總檢視方塊。 若要篩選時間範圍的結果,請在圖表上方的百分位數選取器中選取 [平均]、[最小值]、[50th]、[90th]、[95][最大值]。 篩選可以個別或合併使用。
  • 節點記憶體使用率 %:整個叢集記憶體使用率的匯總檢視方塊。 若要篩選時間範圍的結果,請在圖表上方的百分位數選取器中選取 [平均]、[最小值]、[50th]、[90th]、[95][最大值]。 篩選可以個別或合併使用。
  • 節點計數:Kubernetes 的節點計數和狀態。 表示的叢集節點狀態為 [總計]、[ 就緒] 和 [ 未就緒]。 您可以在圖表上方的選取器中個別篩選或合併它們。
  • 作用中 Pod 計數:來自 Kubernetes 的 Pod 計數和狀態。 所代表 Pod 的狀態為 TotalPendingRunningUnknownSucceededFailed。 您可以在圖表上方的選取器中個別篩選或合併它們。

使用向左鍵和向右鍵來循環瀏覽圖表上的每個數據點。 使用向上鍵和向下鍵來循環執行百分位數行。 選取任一圖表右上角的釘選圖示,將選取的圖表釘選到您檢視的最後一個 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 叢集的任何檢視方塊。 公式僅支援等號。 您可以在第一個篩選之上新增更多篩選,以進一步縮小結果範圍。 例如,如果您依 節點指定篩選,則只能選取 第二個篩選的 [服務 ] 或 [命名空間 ]。

當您選取另一個索引標籤時,會在一個索引標籤中指定篩選條件繼續套用。 選取 指定篩選旁邊的 x 符號之後,就會刪除它。

切換至 [ 節點] 索引 卷標,而數據列階層會遵循 Kubernetes 物件模型,其開頭為叢集中的節點。 展開節點以檢視節點上執行的一或多個 Pod。 如果多個容器分組至 Pod,則會顯示為階層中的最後一個數據列。 如果主機有處理器或記憶體壓力,您也可以檢視主機上有多少非 Pod 相關工作負載正在主機上執行。

Screenshot that shows an example of the Kubernetes Node hierarchy in the performance view.

執行 Windows Server 2019 OS 的 Windows Server 容器會顯示在清單中所有以 Linux 為基礎的節點之後。 當您展開 Windows Server 節點時,您可以檢視節點上執行的一或多個 Pod 和容器。 選取節點之後,[屬性] 窗格會顯示版本資訊。

Screenshot that shows an example Node hierarchy with Windows Server nodes listed.

Azure 容器執行個體 執行 Linux OS 的虛擬節點會顯示在清單中的最後一個 AKS 叢集節點之後。 當您展開 容器執行個體 虛擬節點時,您可以檢視節點上執行的一或多個 容器執行個體 Pod 和容器。 計量不會針對節點收集並報告,僅適用於Pod。

Screenshot that shows an example Node hierarchy with Container Instances listed.

從展開的節點,您可以從節點上執行的 Pod 或容器向下切入至控制器,以檢視針對該控制器篩選的效能數據。 選取特定節點的 [控制器] 資料列底下的值。

Screenshot that shows the drill-down from node to controller in the performance view.

選取頁面頂端的控制器或容器,以檢閱這些物件的狀態和資源使用率。 若要檢閱記憶體使用率,請在 [計量] 下拉式清單中,選取 [記憶體 RSS] 或 [記憶體工作集]。 記憶體 RSS 僅支援 Kubernetes 1.8 版和更新版本。 否則,您會將 Min % 的值檢視為 NaN %,這是代表未定義或無法表示值的數位資料類型值。

Screenshot that shows a Container nodes performance view.

記憶體工作集 會顯示包含的常駐記憶體和虛擬記憶體(快取),而且是應用程式所使用的總和。 記憶體 RSS 只會顯示主要記憶體,這隻不過是常駐記憶體。 此計量會顯示可用記憶體的實際容量。 常駐記憶體與虛擬記憶體有何差異?

  • 常駐記憶體或主要記憶體是叢集節點可用的機器記憶體實際數量。
  • 虛擬記憶體 是操作系統在記憶體壓力下將數據從記憶體交換至磁碟時所使用的保留硬碟空間(快取),然後在需要時將其擷取回記憶體。

根據預設,效能數據是以過去六個小時為基礎,但您可以使用左上方的 TimeRange 選項來變更視窗。 您也可以在百分位數選取器中選取 [最小值]、[平均]、[50]、[90][95][最大值],以篩選時間範圍內的結果。

Screenshot that shows a percentile selection for data filtering.

當您將滑鼠停留在 Trend 數據行下方的條形圖上時,每個橫條都會根據選取的計量,在 15 分鐘內顯示 CPU 或記憶體使用量。 透過鍵盤選取趨勢圖之後,請使用 Alt+Page 向上鍵或 Alt+Page 向下鍵個別循環流覽每個橫條。 如果您將滑鼠停留在列上,就會得到相同的詳細數據。

Screenshot that shows a Trend bar chart hover-over example.

在下一個範例中,針對清單中的第一個節點 aks-nodepool1-,容器的值是 25。 此值是已部署之容器總數的匯總。

Screenshot that shows a rollup of containers-per-node example.

這項資訊可協助您快速識別叢集中節點之間是否有適當的容器平衡。

下表說明當您檢視 [節點] 索引 標籤時所呈現的資訊。

資料行 描述
Name 主機的名稱。
狀態 節點狀態的 Kubernetes 檢視。
最小值、平均%、50th%、90th%、95%、最大值 % 根據所選期間百分位數的平均節點百分比。
Min、Avg、50th、90th、95th、Max 根據所選期間內百分位數的平均節點實際值。 平均值是從節點設定的CPU/記憶體限制來測量。 針對 Pod 和容器,它是主機所報告的平均值。
容器 容器數目。
上線時間 表示節點啟動或重新啟動後的時間。
控制器 僅適用於容器和Pod。 它會顯示它所在的控制器。 並非所有 Pod 都在控制器中,因此有些 Pod 可能會顯示 N/A
趨勢最小值%、平均%、50th%、90th%、第95%、最大值% 條形圖趨勢代表控制器的平均百分位數計量百分比。

展開名為 [其他進程] 的節點之後,您可能會注意到工作負載。 它代表在您的節點上執行的非容器化進程,包括:

  • 自我管理或受控 Kubernetes 非容器化進程。
  • 容器運行時間進程。
  • Kubelet。
  • 在您的節點上執行的系統進程。
  • 在節點硬體或 VM 上執行的其他非 Kubernetes 工作負載。

其計算方式為來自容器化進程的 CAdvisor - 使用量總計。

在選取器中,選取 [ 控制器]。

Screenshot that shows selecting Controllers.]

您可以在這裡檢視控制器的效能健康情況,以及 容器執行個體 虛擬節點控制器或未連線至控制器的虛擬節點 Pod。

Screenshot that shows a \<Name> controllers performance view.

數據列階層會從控制器開始。 當您展開控制器時,您可以檢視一或多個 Pod。 展開Pod,最後一個數據列會顯示群組至Pod的容器。 從展開的控制器,您可以向下切入至執行中的節點,以檢視針對該節點篩選的效能數據。 容器執行個體 未連線到控制器的 Pod 會列在清單中最後一個。

Screenshot that shows an example Controllers hierarchy with Container Instances pods listed.

選取特定控制器之 [節點 ] 資料行底下的值。

Screenshot that shows an example drill-down from controller to node in the performance view.

下表說明當您檢視控制器時顯示的資訊。

資料行 描述
Name 控制器的名稱。
狀態 容器完成執行之後的匯總狀態,其狀態為OK、Terminateed、Failed、StoppedPaused。 如果容器正在執行,但狀態未正確顯示或未由代理程序挑選,且尚未回應超過 30 分鐘,則狀態為 未知。 下表提供狀態圖示的詳細數據。
最小值、平均%、50th%、90th%、95%、最大值 % 所選計量和百分位數之每個實體的平均百分比匯總平均值。
Min、Avg、50th、90th、95th、Max 所選百分位數容器的平均 CPU 毫秒或記憶體效能匯總。 平均值是從 Pod 設定的 CPU/記憶體限制來測量。
容器 控制器或Pod的容器總數。
重新啟動 容器的重新啟動計數匯總。
上線時間 表示容器啟動後的時間。
節點 僅適用於容器和Pod。 它會顯示它所在的控制器。
趨勢最小值%、平均%、50th%、90th%、第95%、最大值% 條形圖趨勢代表控制器的平均百分位數計量。

狀態欄位中的圖示表示容器的在線狀態。

圖示 狀態
Ready running status icon.
Waiting or Paused status icon. 等候或暫停
Last reported running status icon. 上次回報正在執行,但尚未回應超過 30 分鐘
Successful status icon. 已成功停止或無法停止

狀態圖示會根據Pod提供的內容來顯示計數。 它顯示了最差的兩個州。 當您將滑鼠停留在狀態上方時,它會顯示容器中所有 Pod 的匯總狀態。 如果沒有就緒狀態,狀態值會顯示 (0)。

在選取器中,選取 [容器]。

Screenshot that shows selecting Containers.

您可以在這裏檢視 AKS 和 容器執行個體 容器的效能健康情況。

Screenshot that shows a \<Name> containers performance view.

您可以從容器向下切入至 Pod 或節點,以檢視針對該物件篩選的效能數據。 選取特定容器的 [Pod ] 或 [節點 ] 資料行底下的值。

Screenshot that shows an example drill-down from node to containers in the performance view.

下表說明當您檢視容器時顯示的資訊。

資料行 描述
Name 控制器的名稱。
狀態 容器的狀態,如果有的話。 在下一個表格中會提供狀態圖示的更多詳細數據。
最小值、平均%、50th%、90th%、95%、最大值 % 所選計量和百分位數之每個實體的平均百分比匯總。
Min、Avg、50th、90th、95th、Max 所選百分位數之容器的平均 CPU 毫秒或記憶體效能匯總。 平均值是從 Pod 設定的 CPU/記憶體限制來測量。
Pod Pod 所在的容器。
節點  容器所在的節點。
重新啟動 表示容器啟動後的時間。
上線時間 表示容器啟動或重新啟動後的時間。
趨勢最小值%、平均%、50th%、90th%、第95%、最大值% 條形圖趨勢代表容器的平均百分位數計量百分比。

狀態欄位中的圖示會指出 Pod 的在線狀態,如下表所述。

圖示 狀態
Ready running status icon.
Waiting or Paused status icon. 等候或暫停
Last reported running status icon. 上次報告正在執行,但未在 30 分鐘內回應
Terminated status icon. 已成功停止或無法停止
Failed status icon. 失敗狀態

監視和視覺化網路設定

Azure 網路原則管理員包含資訊豐富的 Prometheus 計量,可用來監視及進一步瞭解您的網路設定。 它會在 Azure 入口網站 或 Grafana Labs 中提供內建視覺效果。 如需詳細資訊,請參閱 使用 Azure npm 監視和可視化網路設定。

常見問題集

本節提供常見問題的解答。

「其他進程」在 [節點] 檢視下代表什麼?

其他程式 旨在協助您清楚了解節點上高資源使用量的根本原因。 這項資訊可協助您區分容器化進程與非容器化進程之間的使用方式。

這些其他程序是什麼?

它們不是在您的節點上執行的非容器進程。

我們如何計算此專案?

其他進程 = 來自容器化進程的 CAdvisor - 使用量總計

其他行程包括:

  • 自我管理或受控 Kubernetes 非受控進程。
  • 容器運行時間進程。
  • Kubelet。
  • 在您的節點上執行的系統進程。
  • 在節點硬體或 VM 上執行的其他非 Kubernetes 工作負載。

下一步

  • 請參閱 使用容器深入解析 建立效能警示,以瞭解如何建立高 CPU 和記憶體使用率的警示,以支援您的 DevOps 或作業程式和程式。
  • 請參閱 記錄查詢範例 ,以查看預先定義的查詢和範例,以評估或自定義警示、可視化或分析您的叢集。
  • 請參閱 監視叢集健康情況 ,以瞭解如何檢視 Kubernetes 叢集的健康情況狀態。