Share via


監視 Azure Kubernetes Service (AKS) 控制平面計量 (預覽)

Azure Kubernetes Service (AKS) 控制平面健康情況對於叢集的效能和可靠性至關重要。 控制平面計量 (預覽) 可讓您更了解其可用性和效能,讓您將整體可觀察性最大化,並維持卓越營運。 這些計量與 Prometheus 和 Grafana 完全相容,而且可自訂為只儲存您認為必要的專案。 透過這些新的計量,您可以從 API 伺服器、ETCD、排程器、自動調整程式和控制器管理員收集所有計量。

本文可協助您了解這項新功能,以及如何實作此功能。

先決條件與限制

安裝或更新 aks-preview Azure CLI 延伸模組

重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

使用 az extension add 命令來安裝 aks-preview Azure CLI 延伸模組。

az extension add --name aks-preview

如果您需要更新延伸模組版本,則可以使用 az extension update 命令來執行此動作。

az extension update --name aks-preview

註冊「AzureMonitorMetricsControlPlanePreview」功能旗標

使用 az feature register 命令以註冊 AzureMonitorMetricsControlPlanePreview 功能旗標,如下列範例所示:

az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

狀態需要幾分鐘的時間才會顯示「已註冊」。 使用 az feature show 命令以驗證註冊狀態:

az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

當狀態顯示為 [已註冊] 時,請使用 az provider register 命令重新整理 Microsoft.ContainerService 資源提供者的註冊:

az provider register --namespace "Microsoft.ContainerService"

在您的 AKS 叢集上啟用控制平面計量

您可以在叢集建立期間或現有叢集使用適用於 Prometheus 附加元件之 Azure 監視器受控服務的控制平面計量。 若要從 Kubernetes 叢集收集 Prometheus 計量,請參閱為 Kubernetes 叢集啟用 Prometheus 和 Grafana,並遵循 AKS 叢集的 CLI 索引標籤上的步驟。 在命令行上,請務必包含 --generate-ssh-keys--enable-managed-identity 參數。

如果您的叢集已經部署 Prometheus 附加元件,您可以直接執行 az aks update,確保叢集更新開始收集控制平面計量。

az aks update -n <cluster-name> -g <resource-group>

注意

不同於從叢集節點收集的計量,控制平面計量是由不屬於 ama-metrics 附加元件的元件所收集。 啟用 AzureMonitorMetricsControlPlanePreview 功能旗標和受控 Prometheus 附加元件可確保收集控制平面計量。 啟用計量集合之後,可能需要幾分鐘的時間,資料才會出現在工作區中。

查詢控制平面計量

控制平面計量會儲存在叢集區域的 Azure 監視器工作區中。 您可以直接從工作區或透過連線至工作區的 Azure 受控 Grafana 執行個體來查詢它們。 若要尋找與叢集相關聯的 Azure 監視器工作區,請從所選 AKS 叢集的左側窗格中,瀏覽至 [監視] 區段,然後選取 [Insights]。 在叢集的 [容器深入解析] 頁面上,選取 [監視器設定]

Azure 監視器工作區的螢幕快照。

如果您使用 Azure Managed Grafana 將資料可視化,您可以匯入下列儀表板。 AKS 提供儀表板範本,可協助您即時檢視和分析控制平面遙測資料。

自訂控制平面計量

根據預設,AK 包含一組預先設定的計量,可收集並儲存每個元件。 API serveretcd 依預設為啟用。 此清單可透過 ama-settings-configmap 自訂。 minimal-ingestion 設定檔計量清單可在此處取得。

以下列出預設目標:

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

各種選項與此處列出的 Azure 受控 Prometheus 類似。

所有 ConfigMap 都應該套用至任何叢集的 kube-system 命名空間。

僅擷取預設目標的最小計量

這是設定 default-targets-metrics-keep-list.minimalIngestionProfile="true" 的預設行為。 每個預設目標僅提取本文後面列出的指標,在此情況下為 controlplane-apiservercontrolplane-etcd

從所有目標擷取所有計量

執行下列步驟,從叢集上的所有目標收集所有計量。

  1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap.yaml,並將其重新命名為 configmap-controlplane.yaml

  2. 設定 minimalingestionprofile = false,並確認 default-scrape-settings-enabled 下您想要抓取的目標設定為 true。 您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

  3. 透過執行 kubectl apply 命令套用 ConfigMap。

    kubectl apply -f configmap-controlplane.yaml
    

    套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

除了最小計量之外,也會擷取一些其他計量

Minimal ingestion profile 是有助於降低計量擷取量的設定,因為只會收集預設儀表板、預設錄製規則與預設警示所使用的計量。 執行下列步驟以自訂此行為。

  1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為 configmap-controlplane.yaml

  2. 設定 minimalingestionprofile = true,並確認 default-scrape-settings-enabled 下您想要抓取的目標設定為 true。 您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

  3. default-targets-metrics-keep-list 下,指定 true 目標的計量清單。 例如,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • 透過執行 kubectl apply 命令套用 ConfigMap。

    kubectl apply -f configmap-controlplane.yaml
    

    套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

僅從部分目標擷取特定計量

  1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為 configmap-controlplane.yaml

  2. 設定 minimalingestionprofile = false,並確認 default-scrape-settings-enabled 下您想要抓取的目標設定為 true。 此處您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

  3. default-targets-metrics-keep-list 下,指定 true 目標的計量清單。 例如,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • 透過執行 kubectl apply 命令套用 ConfigMap。

    kubectl apply -f configmap-controlplane.yaml
    

    套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

疑難排解控制平面計量問題

請務必檢查 AzureMonitorMetricsControlPlanePreview 功能旗標是否啟用,且 ama-metrics Pod 正在執行。

注意

Azure 受控服務 Prometheus 的疑難排解方法不會直接在此轉譯,因為抓取控制平面的元件不存在於受控 Prometheus 附加元件中。

ConfigMap 格式化或錯誤

請務必仔細檢查 ConfigMap 的格式化,以及欄位是否已正確填入預期的值。 具體地說,就是 default-targets-metrics-keep-listminimal-ingestion-profiledefault-scrape-settings-enabled

隔離控制平面與資料平面問題

首先,將部分節點相關計量設定為 true,並確認計量已轉送至工作區。 這有助於判斷問題是否與抓取控制平面計量有關。

已擷取的事件

一旦套用變更後,您可以從 [Azure 監視器概觀] 頁面,或從所選叢集的 [監視] 區段開啟計量瀏覽器。 在 Azure 入口網站中,選取 [計量]。 檢查每分鐘擷取的事件數目增加或減少。 其應可協助您判斷特定計量是否遺失,或所有計量皆遺失。

未公開特定計量

有些情況下,雖有記錄計量,但未從目標公開且未轉送至 Azure 監視器工作區。 在此情況下,必須確認其他計量是否轉送至工作區。

無法存取 Azure 監視器工作區

當您啟用附加元件時,您可能指定了您無法沒有存取的現有工作區。 在此情況下,看起來會像是您並未收集及轉送此計量。 請確定您在啟用附加元件或建立叢集時建立新的工作區。

在您的 AKS 叢集上停用控制平面計量

您可以隨時停用控制平面計量,方法是停用功能旗標、停用受控 Prometheus,或刪除 AKS 叢集。

受控 Prometheus 設定之後啟用的預覽旗標

如果在現有的受控 Prometheus 叢集上啟用預覽旗標 (AzureMonitorMetricsControlPlanePreview),則需要強制更新,使叢集發出控制平面計量

您可以執行 az aks update,以確保叢集更新開始收集控制平面計量。

az aks update -n <cluster-name> -g <resource-group>

注意

此動作不會移除 Azure 監視器工作區中儲存的任何現有資料。

執行下列命令來移除會抓取 Prometheus 計量的計量附加元件。

az aks update --disable-azure-monitor-metrics -n <cluster-name> -g <cluster-resource-group>

執行下列命令,使用 az feature unregister 命令取消註冊 AzureMonitorMetricsControlPlanePreview 功能旗標,以停用 AKS 叢集上的控制平面計量的擷取。

az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

常見問題集

  • 可以使用自我裝載 Prometheus 來取消這些計量嗎?

    • 目前無法使用自我裝載 Prometheus 來報廢控制平面計量。 自我裝載 Prometheus 將能夠根據負載平衡器來擷取單一實例。 這些計量不會遞歸,因為控制平面計量的複本通常只有透過Managed Prometheus可見
  • 為什麼使用者代理程式無法透過控制平面計量來使用?

    • Kubernetes 中的控制平面計量沒有使用者代理程式。 使用者代理程式只能透過透過診斷設定提供的控制平面記錄來使用

下一步

評估此預覽功能之後,請分享您的意見反應。 我們有興趣聽聽您的想法。