監視 Azure Kubernetes Service (AKS) 控制平面計量 (預覽)
Azure Kubernetes Service (AKS) 控制平面健康情況對於叢集的效能和可靠性至關重要。 控制平面計量 (預覽) 可讓您更了解其可用性和效能,讓您將整體可觀察性最大化,並維持卓越營運。 這些計量與 Prometheus 和 Grafana 完全相容,而且可自訂為只儲存您認為必要的專案。 透過這些新的計量,您可以從 API 伺服器、ETCD、排程器、自動調整程式和控制器管理員收集所有計量。
本文可協助您了解這項新功能,以及如何實作此功能。
先決條件與限制
- 僅支援適用於 Prometheus 的 Azure 監視器受控服務。
- 不支援私人連結。
- 只能自訂預設的 ama-metrics-settings-config-map。 不支援所有其他自訂。
- 叢集必須使用受控識別驗證。
安裝或更新 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 Managed Grafana 將資料可視化,您可以匯入下列儀表板。 AKS 提供儀表板範本,可協助您即時檢視和分析控制平面遙測資料。
自訂控制平面計量
根據預設,AK 包含一組預先設定的計量,可收集並儲存每個元件。 API server
和 etcd
依預設為啟用。 此清單可透過 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-apiserver
和 controlplane-etcd
。
從所有目標擷取所有計量
執行下列步驟,從叢集上的所有目標收集所有計量。
下載 ConfigMap 檔案 ama-metrics-settings-configmap.yaml,並將其重新命名為
configmap-controlplane.yaml
。設定
minimalingestionprofile = false
,並確認default-scrape-settings-enabled
下您想要抓取的目標設定為true
。 您可以指定的唯一目標包括:controlplane-apiserver
、controlplane-cluster-autoscaler
、controlplane-kube-scheduler
、controlplane-kube-controller-manager
和controlplane-etcd
。透過執行 kubectl apply 命令套用 ConfigMap。
kubectl apply -f configmap-controlplane.yaml
套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。
除了最小計量之外,也會擷取一些其他計量
Minimal ingestion profile
是有助於降低計量擷取量的設定,因為只會收集預設儀表板、預設錄製規則與預設警示所使用的計量。 執行下列步驟以自訂此行為。
下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為
configmap-controlplane.yaml
。設定
minimalingestionprofile = true
,並確認default-scrape-settings-enabled
下您想要抓取的目標設定為true
。 您可以指定的唯一目標包括:controlplane-apiserver
、controlplane-cluster-autoscaler
、controlplane-kube-scheduler
、controlplane-kube-controller-manager
和controlplane-etcd
。在
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 監視器工作區中。
僅從部分目標擷取特定計量
下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為
configmap-controlplane.yaml
。設定
minimalingestionprofile = false
,並確認default-scrape-settings-enabled
下您想要抓取的目標設定為true
。 此處您可以指定的唯一目標包括:controlplane-apiserver
、controlplane-cluster-autoscaler
、controlplane-kube-scheduler
、controlplane-kube-controller-manager
和controlplane-etcd
。在
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-list
、minimal-ingestion-profile
和 default-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 中的控制平面計量沒有使用者代理程式。 使用者代理程式只能透過透過診斷設定提供的控制平面記錄來使用
下一步
評估此預覽功能之後,請分享您的意見反應。 我們有興趣聽聽您的想法。
- 深入了解 AKS 控制平面的預設計量清單。