Überwachen von Azure Kubernetes Service (AKS)-Steuerelementebenenmetriken (Vorschau)

Die Integrität der Azure Kubernetes Service (AKS) -Kontrollebene ist für die Leistung und Zuverlässigkeit des Clusters von entscheidender Bedeutung. Steuerelementebenenmetriken (Vorschau) bieten mehr Einblicke in die Verfügbarkeit und Leistung, sodass Sie Ihren Gesamteinblick maximieren und operative Exzellenz erreichen können. Diese Metriken sind vollständig kompatibel mit Prometheus und Grafana und können so angepasst werden, dass sie nur das speichern, was Sie als notwendig erachten. Mit diesen neuen Metriken können Sie alle Metriken von API-Server, ETCD, Scheduler, Autoscaler und Controller-Manager sammeln.

Dieser Artikel hilft Ihnen, dieses neue Feature zu verstehen, zu implementieren und die gesammelten Telemetriedaten zu beobachten.

Voraussetzungen und Einschränkungen

Installieren oder Aktualisieren der Azure CLI-Erweiterung aks-preview

Wichtig

AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von Service Level Agreements und der Herstellergarantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Installieren Sie die Azure CLI-Speichererweiterung aks-preview mit dem Befehl az extension add.

az extension add --name aks-preview

Wenn Sie die Erweiterungsversion aktualisieren müssen, können Sie dazu den az extension update-Befehl verwenden.

az extension update --name aks-preview

Registrieren des Feature-Flags „AzureMonitorMetricsControlPlanePreview“

Registrieren Sie das Featureflag AzureMonitorMetricsControlPlanePreview mithilfe des Befehls AzureMonitorMetricsControlPlanePreview, wie im folgenden Beispiel gezeigt:

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

Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature show:

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

Wenn der Zustand Registered (Registriert) lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls az provider register:

az provider register --namespace "Microsoft.ContainerService"

Aktivieren von Steuerelementebenenmetriken auf Ihrem AKS-Cluster

Sie können Steuerungsebenenmetriken mit dem verwalteten Azure Monitor-Dienst für Prometheus-Add-On während der Clustererstellung oder für ein vorhandenes Cluster aktivieren. Um Prometheus-Metriken aus Ihrem Kubernetes-Cluster zu sammeln, lesen Sie Aktivieren von Prometheus und Grafana für Kubernetes-Cluster und führen Sie die Schritte auf der CLI-Registerkarte für einen AKS-Cluster aus. Achten Sie in der Befehlszeile darauf, die Parameter --generate-ssh-keys und --enable-managed-identity einzufügen.

Wenn in Ihrem Cluster bereits das Prometheus-Add-On bereitgestellt ist, können Sie einfach einen az aks update ausführen, um sicherzustellen, dass der Cluster aktualisiert wird, um mit dem Sammeln von Metriken der Steuerungsebene beginnen.

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

Hinweis

Im Gegensatz zu den Metriken, die von Clusterknoten gesammelt werden, werden Steuerelementebenenmetriken von einer Komponente gesammelt, die nicht Teil des ama-metrics-Add-Ons ist. Durch Aktivieren des AzureMonitorMetricsControlPlanePreview-Feature-Flags und des verwalteten Prometheus-Add-Ons wird sichergestellt, dass Metriken der Steuerungsebene erfasst werden. Nach dem Aktivieren der Metriksammlung kann es mehrere Minuten dauern, bis die Daten im Arbeitsbereich angezeigt werden.

Abfragen von Steuerelementebenenmetriken

Metriken der Steuerebene werden in einem Azure-Monitorarbeitsbereich in der Region des Clusters gespeichert. Sie können direkt vom Arbeitsbereich oder über die Azure Managed Grafana-Instanz abgefragt werden, die mit dem Arbeitsbereich verbunden ist. Um den Azure Monitor-Arbeitsbereich zu finden, der dem Cluster zugeordnet ist, navigieren Sie im linken Bereich Ihres ausgewählten AKS-Clusters zum Abschnitt Überwachung und wählen Sie Insights aus. Wählen Sie auf der Seite „Containereinblicke“ für das Cluster Monitoreinstellungen aus.

Screenshot des Azure Monitor-Arbeitsbereichs.

Wenn Sie Azure Managed Grafana zum Visualisieren der Daten verwenden, können Sie die folgenden Dashboards importieren. AKS bietet Dashboardvorlagen, mit denen Sie Telemetriedaten der Steuerungsebene in Echtzeit anzeigen und analysieren können.

Anpassen von Metriken der Steuerungsebene

Standardmäßig enthält AKS einen vordefinierten Satz von Metriken, die für jede Komponente erfasst und gespeichert werden sollen. API server und etcd sind standardmäßig aktiviert. Diese Liste kann über die ama-settings-configmap angepasst werden. Die Liste der minimal-ingestion-Profilmetriken ist hier verfügbar.

Im Folgenden sind die Standardziele aufgeführt:

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

Die verschiedenen Optionen ähneln dem hier aufgeführten Azure Managed Prometheus.

Alle ConfigMaps sollten für jedes Cluster auf den kube-system-Namespace angewendet werden.

Aufnehmen nur minimaler Metriken für die Standardziele

Dies ist das Standardverhalten mit der Einstellung default-targets-metrics-keep-list.minimalIngestionProfile="true". Nur Metriken, die weiter unten in diesem Artikel aufgeführt werden, werden für jedes der Standardziele aufgenommen, was in diesem Fall controlplane-apiserver und controlplane-etcd sind.

Aufnehmen aller Metriken aus allen Zielen

Führen Sie die folgenden Schritte aus, um alle Metriken von allen Zielen im Cluster zu erfassen.

  1. Laden Sie die ConfigMap-Datei ama-metrics-settings-configmap.yaml herunter und benennen Sie sie in configmap-controlplane.yaml um.

  2. Legen Sie minimalingestionprofile = false fest und prüfen Sie, dass die Ziele unter default-scrape-settings-enabled, die Sie auslesen möchten, auf true festgelegt sind. Die einzigen Ziele, die Sie angeben können, sind: controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager und controlplane-etcd.

  3. Wenden Sie die ConfigMap an, indem Sie den Befehl kubectl apply ausführen.

    kubectl apply -f configmap-controlplane.yaml
    

    Nachdem die Konfiguration angewendet wurde, dauert es mehrere Minuten, bis die Metriken der angegebenen Ziele aus der Kontrollebene im Azure Monitor-Arbeitsbereich angezeigt werden.

Aufnehmen einiger anderer Metriken zusätzlich zu den Mindestmetriken

Minimal ingestion profile ist eine Einstellung, die dazu beiträgt, das Erfassungsvolumen von Metriken zu reduzieren, da nur Metriken, die von Standarddashboards, Standardaufzeichnungsregeln und Standardwarnungen verwendet werden, erfasst werden. Führen Sie die folgenden Schritte aus, um dieses Verhalten anzupassen.

  1. Laden Sie die ConfigMap-Datei ama-metrics-settings-configmap herunter und benennen Sie sie in configmap-controlplane.yaml um.

  2. Legen Sie minimalingestionprofile = true fest und prüfen Sie, dass die Ziele unter default-scrape-settings-enabled, die Sie auslesen möchten, auf true festgelegt sind. Die einzigen Ziele, die Sie angeben können, sind: controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager und controlplane-etcd.

  3. Geben Sie unter default-targets-metrics-keep-list die Liste der Metriken für die true-Ziele an. Ein auf ein Objekt angewendeter

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Wenden Sie die ConfigMap an, indem Sie den Befehl kubectl apply ausführen.

    kubectl apply -f configmap-controlplane.yaml
    

    Nachdem die Konfiguration angewendet wurde, dauert es mehrere Minuten, bis die Metriken der angegebenen Ziele aus der Kontrollebene im Azure Monitor-Arbeitsbereich angezeigt werden.

Aufnehmen nur bestimmter Metriken aus einigen Zielen

  1. Laden Sie die ConfigMap-Datei ama-metrics-settings-configmap herunter und benennen Sie sie in configmap-controlplane.yaml um.

  2. Legen Sie minimalingestionprofile = false fest und prüfen Sie, dass die Ziele unter default-scrape-settings-enabled, die Sie auslesen möchten, auf true festgelegt sind. Die einzigen Ziele, die Sie hier angeben können, sind controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler,controlplane-kube-controller-manager und controlplane-etcd.

  3. Geben Sie unter default-targets-metrics-keep-list die Liste der Metriken für die true-Ziele an. Ein auf ein Objekt angewendeter

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Wenden Sie die ConfigMap an, indem Sie den Befehl kubectl apply ausführen.

    kubectl apply -f configmap-controlplane.yaml
    

    Nachdem die Konfiguration angewendet wurde, dauert es mehrere Minuten, bis die Metriken der angegebenen Ziele aus der Kontrollebene im Azure Monitor-Arbeitsbereich angezeigt werden.

Behandeln von Problemen mit Steuerelementebenenmetriken

Stellen Sie sicher, dass die Feature-Flag AzureMonitorMetricsControlPlanePreview aktiviert ist und die ama-metrics-Pods ausgeführt werden.

Hinweis

Die Problembehandlungsmethoden für den Azure Managed Service Prometheus werden hier nicht direkt übersetzt, da die Komponenten, welche die Steuerebene auslesen, nicht im verwalteten Prometheus-Add-On vorhanden sind.

ConfigMap-Formatierung oder -Fehler

Stellen Sie sicher, dass Sie die Formatierung der ConfigMap überprüfen und die Felder mit den vorgesehenen Werten richtig aufgefüllt werden. Insbesondere die default-targets-metrics-keep-list, minimal-ingestion-profile und default-scrape-settings-enabled.

Isolieren der Steuerungsebene von Datenebenenproblemen

Legen Sie zunächst einige der knotenbezogenen Metriken auf true fest und überprüfen Sie, ob die Metriken an den Arbeitsbereich weitergeleitet werden. Dies hilft zu ermitteln, ob das Problem spezifisch für das Auslesen von Steuerelementebenenmetriken ist.

Aufgenommene Ereignisse

Nachdem Sie die Änderungen angewendet haben, können Sie den Metrik-Explorer über die Übersichtsseite von Azure Monitor oder über den Abschnitt Überwachung des ausgewählten Clusters öffnen. Wählen Sie im Azure-Portal die Option Metriken aus. Überprüfen Sie, ob die Anzahl der pro Minute aufgenommenen Ereignisse erhöht oder verringert wird. Es sollte Ihnen helfen zu ermitteln, ob die spezifische Metrik fehlt oder ob alle Metriken fehlen.

Bestimmte Metriken werden nicht verfügbar gemacht

Es gab Fälle, in denen die Metriken dokumentiert, aber nicht vom Ziel verfügbar gemacht und nicht an den Azure Monitor-Arbeitsbereich weitergeleitet wurden. In diesem Fall muss überprüft werden, ob andere Metriken an den Arbeitsbereich weitergeleitet werden.

Kein Zugriff auf den Azure Monitor-Arbeitsbereich

Wenn Sie das Add-On aktivieren, haben Sie möglicherweise einen vorhandenen Arbeitsbereich angegeben, auf den Sie keinen Zugriff haben. In diesem Fall könnte es so aussehen, als würden die Metriken nicht erfasst und weitergeleitet. Stellen Sie sicher, dass Sie beim Aktivieren des Add-Ons oder beim Erstellen des Clusters einen neuen Arbeitsbereich erstellen.

Deaktivieren von Steuerelementebenenmetriken auf Ihrem AKS-Cluster

Sie können Steuerebenenmetriken jederzeit deaktivieren, indem Sie entweder das Feature-Flag deaktivieren, verwaltetes Prometheus deaktivieren oder das AKS-Cluster löschen.

Vorschauflag nach dem Setup von verwaltetem Prometheus aktiviert

Wenn das Vorschauflag (AzureMonitorMetricsControlPlanePreview) auf einem vorhandenen verwalteten Prometheus-Cluster aktiviert wurde, muss ein Update für den Cluster erzwungen werden, um Metriken der Steuerungsebene auszugeben

Sie können einen „az aks update“-Befehl ausführen, um sicherzustellen, dass der Cluster aktualisiert wird, um mit dem Sammeln von Metriken der Steuerungsebene zu beginnen.

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

Hinweis

Durch diese Aktion werden keine vorhandenen Daten entfernt, die in Ihrem Azure Monitor-Arbeitsbereich gespeichert sind.

Führen Sie den folgenden Befehl aus, um das Metrik-Add-On zu entfernen, das Prometheus-Metriken ausliest.

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

Führen Sie den folgenden Befehl aus, um das Auslesen der Metriken der Steuerungsebene im AKS-Cluster zu deaktivieren, indem Sie die Registrierung des AzureMonitorMetricsControlPlanePreview-Feature-Flags mithilfe des az-Features aufheben-Befehls aufheben.

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

Häufig gestellte Fragen

  • Können diese Metriken mit selbst gehostetem Prometheus ausgelesen werden?

    • Die Metriken der Steuerebene können derzeit nicht mit selbst gehostetem Prometheus ausgelesen werden. Selbst gehostetes Prometheus kann die einzelne Instanz je nach Lastenausgleich auslesen. Diese Metriken sind nicht identisch, da es häufig mehrere Replikate der Metriken der Steuerungsebene gibt, die nur über verwaltetes Prometheus sichtbar sind.
  • Warum ist der Benutzer-Agent nicht über die Metriken der Steuerebene verfügbar?

Nächste Schritte

Nachdem Sie dieses Vorschaufeature ausgewertet haben, geben Sie Ihr Feedback weiter. Wir sind daran interessiert zu hören, was Sie denken.