監視工作負載部署
本文是一系列文章的一部分。 從概 觀 開始。
請務必監視 Kubernetes 工作負載的健康情況和效能,以確保其以最佳方式執行。 Azure Kubernetes Service (AKS) 有數個工具,可用來檢查部署、 DaemonSet
功能和服務的健全狀況和效能。
工具
請務必判斷所有部署和 DaemonSet
功能是否正在執行。 本文說明如何使用下列方法,判斷就緒 和 可用 狀態中的 複本是否符合預期的複本計數:
- Azure 入口網站。
- Azure 監視器的容器深入解析功能。
- kubectl 命令列工具。
- Prometheus 和 Grafana。
Azure 入口網站
您可以使用Azure 入口網站來驗證工作負載中下列元件的健全狀況。 如需詳細資訊,請參閱 從Azure 入口網站 存取 Kubernetes 資源。
部署、 ReplicaSet
、 StatefulSet
、 和 DaemonSet
確認處於就緒 狀態的複 本數目符合所需的複本數目。 入口網站會顯示:
目前可用的複本數目,且已準備好提供流量。 這些複本已成功排程到背景工作節點、完成其啟動程式,並已通過整備檢查。
針對部署指定的所需複本數目,或部署要維護的複本數目。 Kubernetes 部署控制器會持續監視部署的狀態,並確保實際複本數目符合所需的數目。
服務與輸入
請確定所有服務和輸入的狀態都 正常 。
儲存體
請確定狀態已 系結 至所有永續性磁片區宣告和永續性磁片區。
容器深入解析
容器深入解析 是監視 功能 ,可為部署至 AKS 或受已啟用 Azure Arc 的 Kubernetes 所 管理的容器工作負載提供監視功能。 此功能會收集效能和健康情況資訊,例如來自控制器、節點和容器的記憶體和處理器計量。 它也會擷取容器記錄以供分析。
您可以使用各種檢視和預先建置的活頁簿來分析收集的資料。 檢查叢集中各種元件的效能和行為。 透過容器深入解析,您可以取得容器工作負載整體狀態的深入解析,以便做出明智的決策,以優化其效能並針對問題進行疑難排解。
您可以使用容器深入解析來:
藉由識別在每個節點上執行的容器及其處理器和記憶體使用量,來識別資源瓶頸。
識別容器群組及其容器裝載在容器實例中的處理器和記憶體使用量。
藉由識別容器位於控制器或 Pod 中的位置,以檢視控制器或 Pod 的整體效能。
檢閱在主機上執行的工作負載的資源使用量,且與支援 Pod 的標準進程無關。
瞭解叢集在平均和繁重負載下的行為,以便識別容量需求,並判斷叢集可承受的最大負載。
存取容器引擎產生的即時容器記錄和計量,以便即時針對問題進行疑難排解。
設定警示,以主動通知您或記錄節點或容器上的 CPU 和記憶體使用量超過閾值,或當叢集發生健康情況狀態變更時,基礎結構或節點健康情況匯總。
在Azure 入口網站中,容器深入解析提供數個工具來協助監視和分析 AKS 叢集的健康情況和效能。
叢集 :這項功能提供 AKS 叢集的概觀,包括 CPU 和記憶體使用量、Pod 和節點計數,以及網路流量等重要計量。 您可以深入瞭解叢集的整體健康情況和資源使用量。
報告 :這項功能提供預先建置的報告,可讓您用來視覺化和分析叢集效能的各個層面,例如資源使用量、Pod 健康情況和容器深入解析。 此資料可協助您瞭解容器和工作負載的行為和效能。
節點:這項功能提供叢集中節點的詳細資訊。 它會顯示 CPU 和記憶體使用量、磁片和網路 I/O 的計量,以及每個節點的條件和狀態。 您可以使用此資料來監視個別節點效能、找出潛在的瓶頸,並確保有效率的資源配置。
控制器 :此功能可讓您查看 AKS 叢集中的 Kubernetes 控制器。 它會顯示控制器實例數目、目前狀態和控制器作業狀態等資訊。 您可以監視管理工作負載部署、服務和其他資源的控制器健康情況和效能。
容器 :這項功能可讓您深入瞭解在 AKS 叢集中執行的容器。 它提供與資源使用量、重新開機和每個容器生命週期事件相關的資訊。 您可以使用此資料來協助監視和疑難排解工作負載中的容器。
即時記錄 : 即時記錄 功能提供來自執行中容器的記錄事件的即時串流,因此您可以即時檢視容器記錄。 您可以使用此資料來有效地監視和疑難排解應用程式,並快速找出並解決容器中的問題。
如需詳細資訊,請參閱以下資源:
- 使用容器深入解析監視 Kubernetes 叢集效能
- 使用容器深入解析設定 GPU 監視
- 使用 Azure 網路原則管理員監視和視覺化網路設定
- 使用容器深入解析監視部署和 HPA 計量
- 監視永續性磁片區 (PV) 計量
- 使用 Syslog 監視安全性
- 容器深入解析中的報表
- 容器深入解析收集的計量
- 即時檢視 Kubernetes 記錄、事件和 Pod 計量
- 即時檢視叢集計量
命令列工具
若要檢查工作負載的狀態,您可以使用 kubectl 命令列工具來透過 Kubernetes API 與 Kubernetes 叢集的控制平面通訊。
Pod
若要列出在所有命名空間中執行的 Pod,請執行下列命令:
kubectl get pod -A
在命令的輸出中, READY 資料行會提供有關 Pod 容器整備狀態的重要資訊。
第一個數位表示目前處於 就緒 狀態的容器計數。 這些容器已通過整備探查,並已準備好處理連入流量。 第二個數字代表 Pod 內定義的容器總數,不論其整備狀態為何。 其中包含已就緒的容器,以及仍在初始化或遇到問題的容器。
請確定第一個數位(就緒容器)符合 Pod 的第二個數字(容器總數)。 如果容器不同,某些容器可能尚未就緒,或可能會有問題導致無法到達 就緒 狀態。
部署、 StatefulSet
、 DaemonSet
、 和 StatefulSet
執行下列命令以擷取 所有命名空間中的部署 :
kubectl get deploy -A
在命令的 kubectl get deploy
輸出中,READY 資料行中的 數位表示部署中複本的目前整備狀態。
第一個數位代表備妥且可供服務流量的複本數目。 這些複本已成功啟動並通過整備檢查。 第二個數字代表部署組態中指定的所需複本數目。 這是部署要維護的目標複本數目。
請務必確保第一個數位符合第二個數字。 它表示所需的複本數目正在執行並就緒。 這兩個數字之間的任何差異都可能表示您必須解決的縮放或整備問題。
執行下列命令以擷取 所有命名空間中的 StatefulSet 功能:
kubectl get statefulset -A
執行下列命令來擷取 所有命名空間中的 DaemonSet 功能:
kubectl get ds -A
您可以執行 kubectl get ds
命令,以確認 DaemonSet
是否如預期般執行 。 例如,您可以執行下列命令來確認已成功部署容器深入解析代理程式:
kubectl get ds ama-logs --namespace=kube-system
同樣地,如果您將 AKS 叢集設定為在監視受控 Prometheus 中 收集 Prometheus 計量,您可以執行下列命令來確認 DaemonSet
是否已在 Linux 節點集區上正確部署 :
kubectl get ds ama-metrics-node --namespace=kube-system
此輸出提供叢集中功能的相關資訊 DaemonSet
。 檢查輸出,以確保就緒 、 目前 和 所需 狀態中的 Pod 數目相同。 如果相同,組態中指定的 DaemonSet
所需 Pod 數目等於目前執行中且已就緒的 Pod 數目。
建議您對 ReplicaSet 功能執行相同的檢查。 您可以使用下列命令來擷取 ReplicaSet
所有命名空間中的功能:
kubectl get rs -A
請確定此輸出中的數位與每個狀態相同,以便預期執行 Pod 或複本的預期數目。 差異可能表示需要使用下列其中一個命令進行進一步調查或疑難排解。
kubectl 描述: 您可以使用 kubectl describe 命令來取得 Kubernetes 資源的詳細資訊,例如 Pod、部署和服務。 您可以取得指定資源的完整概觀,包括其目前的狀態、事件、條件和相關中繼資料。 此資訊是從 Kubernetes API 伺服器擷取。 此命令有助於針對資源的狀態進行疑難排解和瞭解。
您可以執行 kubectl describe pod <pod-name>
來取得特定 Pod 的詳細資訊,包括其目前的狀態、事件、標籤,以及與其相關聯的容器。 輸出會顯示Pod狀態、事件、磁碟區和條件等資訊。
kubectl 記錄: 您可以使用 kubectl logs 命令來擷取 Pod 內容器所產生的記錄。 此命令有助於偵錯和疑難解答。 您可以即時檢視記錄,或從容器擷取歷程記錄。
若要檢視容器記錄,您可以使用 命令 kubectl logs <pod-name> -c <container-name>
。 將取代 <pod-name>
為 Pod 的名稱。 將取代 <container-name>
為您要從中擷取記錄的容器名稱。 如果 Pod 中只有一個容器,則不需要指定容器名稱。 您也可以使用 -f
旗標搭配 kubectl logs
來即時追蹤記錄。 此旗標類似於 tail -f
Linux命令。
kubectl 事件: 您可以使用 kubectl events 命令,在部署、 DaemonSet
、 ReplicaSet
或 Pod 未啟動或啟動期間遇到問題時進行疑難解答。 此命令提供與指定資源相關聯的事件時間清單。 您可以深入瞭解可能造成問題的原因。
若要使用 kubectl events
,您可以執行 命令 kubectl events
,後面接著特定的資源名稱。 或者,您可以使用選取器根據標籤、命名空間或其他準則來篩選事件。
例如,若要擷取與特定 Pod 相關的事件,您可以執行 kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod
。 將取代 <pod-name>
為您想要調查的 Pod 名稱。 命令的 kubectl events
輸出會顯示事件類型(一般或警告)、事件訊息、事件原因,以及事件發生時的時間戳等資訊。 您可以使用這項資訊來協助判斷啟動期間造成失敗或問題的原因。
如果您懷疑部署、 DaemonSet
或 ReplicaSet
等特定資源發生問題,您可以使用選取器來篩選事件。 例如, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment
顯示與特定部署相關的事件。 檢查事件,以便收集潛在錯誤、失敗或其他可能阻止資源正常啟動之事件的重要詳細數據。 使用此數據來協助針對影響資源的問題進行疑難解答和解決。
使用 Prometheus 和 Grafana 進行叢集內監視
如果您在 AKS 叢集中部署 Prometheus 和 Grafana ,您可以使用 K8 叢集詳細數據儀錶板 來取得見解。 此儀錶板會顯示從 Prometheus 叢集計量收集的資訊,例如 CPU 和記憶體使用量、網路活動和文件系統使用量。 它也會顯示個別 Pod、容器和 系統服務 的詳細統計數據。
若要確保部署、作業、Pod 和容器的健康情況和效能,您可以使用儀錶板中的功能。 選取 [部署 ] 以檢視每個部署的複本數目和複本總數。 選取 [容器 ] 以檢視顯示執行中、暫止、失敗和成功容器的圖表。
監視 Prometheus 和 Azure Managed Grafana 的受控服務
您可以使用預先建置的儀錶板來可視化和分析 Prometheus 計量。 若要這樣做,您必須設定 AKS 叢集,以在 Prometheus 的監視受控服務中 收集 Prometheus 計量,並將您的 監視器工作區 連線到 Azure 受控 Grafana 工作區。
安裝預先建置的儀錶板,以全面檢視 Kubernetes 叢集的效能和健康情況。 如需詳細的安裝指示,請參閱 Prometheus 監視 Kubernetes 的混合。 儀錶板會布建在Managed Prometheus資料夾中的指定 Azure 受控 Grafana 實例中。 某些儀錶板包括:
- Kubernetes / 計算資源 / 叢集
- Kubernetes / 計算資源 / 命名空間 (Pods)
- Kubernetes / 計算資源 / 節點 (Pods)
- Kubernetes / 計算資源 / Pod
- Kubernetes / 計算資源 / 命名空間 (工作負載)
- Kubernetes / 計算資源 / 工作負載
- Kubernetes / Kubelet
- 節點匯出工具/USE 方法/節點
- 節點匯出工具/節點
- Kubernetes / 計算資源 / 叢集 (Windows)
- Kubernetes / 計算資源 / 命名空間 (Windows)
- Kubernetes / 計算資源 / Pod (Windows)
- Kubernetes / USE 方法 / 叢集 (Windows)
- Kubernetes / USE 方法 / 節點 (Windows)
這些內建儀錶板廣泛用於開放原始碼社群,以使用 Prometheus 和 Grafana 監視 Kubernetes 叢集。 使用這些儀錶板來查看計量,例如資源使用量、Pod 健康情況和網路活動。 您也可以建立專為監視需求量身打造的自訂儀錶板。 儀錶板可協助您有效地監視和分析 AKS 叢集中的 Prometheus 計量,這可讓您優化效能、疑難解答問題,並確保 Kubernetes 工作負載的順暢作業。
您可以使用 Kubernetes/ Compute Resources / Node (Pods) 儀錶板來查看 Linux 代理程序節點的計量。 您可以將每個 Pod 的 CPU 使用量、CPU 配額、記憶體使用量和記憶體配額可視化。
Kubernetes / Compute Resources / Pod Grafana 儀錶板提供所選叢集、命名空間和 Pod 的資源耗用量和效能計量見解。 您可以使用此儀錶板來取得與 CPU 使用量、CPU 節流、CPU 配額、記憶體使用量、記憶體配額、網路計量和記憶體相關的計量。 在儀錶板中,選取所選命名空間內的 AKS 叢集、命名空間和 Pod,以查看下列詳細數據:
CPU 使用量:此圖表會顯示所選 Pod 一段時間的 CPU 使用量。 您可以檢閱 CPU 耗用量模式,並找出潛在的尖峰或異常狀況。
CPU 節流:此圖表提供CPU節流的深入解析,當Pod超過其CPU資源限制時,就會發生此節流。 監視此計量,以協助識別因CPU節流而限制Pod效能的區域。
CPU 配額:此圖表顯示所選 Pod 的已配置 CPU 配額。 如果 Pod 超過其指派的 CPU 配額,可能需要調整資源。
記憶體使用量:此圖表會顯示所選 Pod 的記憶體使用量。 監視記憶體耗用量模式,並識別任何記憶體相關問題。
記憶體配額:此圖表會顯示 Pod 的配置記憶體配額。 如果 Pod 超過其指派的記憶體配額,則可能表示需要資源優化。
網路計量:這些圖表顯示已接收和傳輸的頻寬,以及已接收和傳輸封包的速率。 這些計量可協助您監視網路使用量,並偵測任何潛在的網路瓶頸或異常狀況。
儲存體 計量:本節提供記憶體相關計量的相關信息,例如每秒 I/O 作業 (IOPS) 和輸送量。 監視這些計量,以協助測量 Pod 記憶體的效能和效率。
您可以使用 Kubernetes /計算資源/Pod Grafana 儀錶板來取得 Kubernetes 叢集中 Pod 的資源使用量、效能和行為見解。 使用這項資訊來優化資源配置、針對效能問題進行疑難解答,以及做出明智的決策,以確保容器化工作負載的順利運作。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Paolo Salvatori |首席客戶工程師
其他投稿人:
- Kevin Harris |主要解決方案專家
- 弗朗西斯·西米·納扎雷斯 |資深技術專家
若要查看非公用LinkedIn配置檔,請登入LinkedIn。