Metrics Server ist eine skalierbare, effiziente Quelle von Containerressourcenmetriken für in Kubernetes integrierte Autoscaling-Pipelines.
Metrics Server sammelt Ressourcenmetriken von Kubelets und stellt sie über die Metrics API im Kubernetes-Apiserver zur Verwendung durch Horizontal Pod Autoscaler und Vertical Pod Autoscaler bereit. Auf die Metrics-API kann auch über kubectl top
zugegriffen werden, was das Debuggen von Autoscaling-Pipelines erleichtert.
Vorsicht
Metrics Server ist nur für Zwecke der automatischen Skalierung gedacht. Verwenden Sie es beispielsweise nicht zur Weiterleitung von Metriken an Überwachungslösungen oder als Quelle für Metriken von Überwachungslösungen. In solchen Fällen erfassen Sie bitte Metriken direkt vom Kubelet /metrics/resource
-Endpunkt.
Metrics Server bietet:
Sie können Metrics Server für Folgendes verwenden:
Verwenden Sie Metrics Server nicht, wenn Sie Folgendes benötigen:
Für nicht unterstützte Anwendungsfälle schauen Sie sich vollständige Überwachungslösungen wie Prometheus an.
Für Metrics Server gelten besondere Anforderungen an die Cluster- und Netzwerkkonfiguration. Diese Anforderungen sind nicht die Standardanforderungen für alle Clusterverteilungen. Bitte stellen Sie sicher, dass Ihre Clusterverteilung diese Anforderungen unterstützt, bevor Sie Metrics Server verwenden:
--kubelet-insecure-tls
an Metrics Server übergeben).hostNetwork
aktiviert ist). Erfahren Sie mehr über die Kommunikation zwischen Steuerungsebene und Knoten..status.addresses
und Port im Feld .status.daemonEndpoints.kubeletEndpoint.port
(Standard 10250). Metrics Server wählt die erste Knotenadresse basierend auf der Liste aus, die durch das Befehlszeilen-Flag kubelet-preferred-address-types
bereitgestellt wird (Standard: InternalIP,ExternalIP,Hostname
in Manifesten). Metrics Server kann entweder direkt aus dem YAML-Manifest oder über das offizielle Helm-Chart installiert werden. Führen Sie den folgenden Befehl aus, um die neueste Metrics Server-Version aus dem Components.yaml- Manifest zu installieren.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Installationsanweisungen für frühere Versionen finden Sie in den Metrics Server-Versionen.
Metrikserver | Metrik-API-Gruppe/Version | Unterstützte Kubernetes-Version |
---|---|---|
0,7.x | metrics.k8s.io/v1beta1 | 1,19+ |
0,6.x | metrics.k8s.io/v1beta1 | 1,19+ |
0,5.x | metrics.k8s.io/v1beta1 | *1,8+ |
0,4.x | metrics.k8s.io/v1beta1 | *1,8+ |
0,3.x | metrics.k8s.io/v1beta1 | 1,8-1,21 |
*Kubernetes-Versionen vor Version 1.16 erfordern die Übergabe des Befehlszeilenflags --authorization-always-allow-paths=/livez,/readyz
Metrics Server kann im Hochverfügbarkeitsmodus direkt aus einem YAML-Manifest oder über das offizielle Helm-Chart installiert werden, indem der replicas
auf größer als 1
gesetzt wird. Führen Sie den folgenden Befehl aus, um die neueste Version von Metrics Server im Hochverfügbarkeitsmodus über das Manifest high-availability.yaml zu installieren.
Auf Kubernetes v1.21+:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
Auf Kubernetes v1.19-1.21:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
Notiz
Diese Konfiguration erfordert einen Cluster mit mindestens zwei Knoten, auf denen Metrics Server geplant werden kann.
Um die Effizienz dieser hochverfügbaren Konfiguration zu maximieren, wird außerdem empfohlen , das CLI-Flag --enable-aggregator-routing=true
zum kube-apiserver hinzuzufügen, damit die an Metrics Server gesendeten Anforderungen zwischen den beiden Instanzen lastenverteilt werden.
Das Helm-Diagramm wird als zusätzliche Komponente in diesem Repo verwaltet und in einem Diagramm-Repository veröffentlicht, das auf dem gh-pages
-Zweig basiert. Für jede Metrics Server-Version wird eine neue Version des Diagramms veröffentlicht und kann bei Bedarf auch unabhängig veröffentlicht werden. Auf das Diagramm im master
sollte nicht direkt verwiesen werden, da es seit seiner letzten Veröffentlichung Änderungen enthalten könnte. Um den Diagrammcode anzuzeigen, verwenden Sie das Diagramm-Release-Tag.
Metrics Server benötigt die CAP_NET_BIND_SERVICE
-Funktion, um eine Bindung an privilegierte Ports als Nicht-Root-Benutzer herzustellen. Wenn Sie Metrics Server in einer Umgebung ausführen, die PSSs oder andere Mechanismen zur Einschränkung der Pod-Funktionen verwendet, stellen Sie sicher, dass Metrics Server diese Funktion nutzen darf. Dies gilt auch dann, wenn Sie das Flag --secure-port
verwenden, um den Port zu ändern, den Metrics Server an einen nicht privilegierten Port bindet.
Ab v0.5.0 verfügt Metrics Server über Standardressourcenanforderungen, die eine gute Leistung für die meisten Clusterkonfigurationen mit bis zu 100 Knoten gewährleisten sollten:
Die Ressourcennutzung des Metrics-Servers hängt von mehreren unabhängigen Dimensionen ab, wodurch ein Skalierbarkeitsumschlag entsteht. Die Standardkonfiguration des Metrics-Servers sollte in Clustern funktionieren, die keinen der unten aufgeführten Schwellenwerte überschreiten:
Menge | Namespace-Schwellenwert | Cluster-Schwellenwert |
---|---|---|
#Knoten | n / A | 100 |
#Pods pro Knoten | 70 | 70 |
#Bereitstellungen mit HPAs | 100 | 100 |
Ressourcen können proportional zur Anzahl der Knoten im Cluster angepasst werden. Weisen Sie für Cluster mit mehr als 100 Knoten zusätzlich Folgendes zu:
Sie können den gleichen Ansatz verwenden, um die Ressourcenanforderungen zu senken, es gibt jedoch eine Grenze, bei der sich dies auf andere Skalierbarkeitsdimensionen wie die maximale Anzahl von Pods pro Knoten auswirken kann.
Abhängig von Ihrem Cluster-Setup müssen Sie möglicherweise auch die an den Metrics Server-Container übergebenen Flags ändern. Die nützlichsten Flags:
--kubelet-preferred-address-types
– Die Priorität der Knotenadresstypen, die beim Bestimmen einer Adresse für die Verbindung zu einem bestimmten Knoten verwendet werden (Standard [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
– Überprüfen Sie nicht die Zertifizierungsstelle der von Kubelets bereitgestellten Bereitstellungszertifikate. Nur zu Testzwecken.--requestheader-client-ca-file
– Geben Sie ein Stammzertifikatspaket zur Überprüfung von Client-Zertifikaten bei eingehenden Anforderungen an.--node-selector
– Kann abgeschlossen werden, um die Metriken von den angegebenen Knoten basierend auf Labels zu extrahierenSie können eine vollständige Liste der Metrics Server-Konfigurationsflags abrufen, indem Sie Folgendes ausführen:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Metrics Server ist eine Komponente in der Kernmetrikpipeline, die in der Kubernetes-Überwachungsarchitektur beschrieben wird.
Weitere Informationen finden Sie unter:
Bevor Sie ein Problem veröffentlichen, schauen Sie sich zunächst die häufig gestellten Fragen und bekannten Probleme an.
Erfahren Sie auf der Community-Seite, wie Sie mit der Kubernetes-Community interagieren können.
Sie erreichen die Betreuer dieses Projekts unter:
Dieses Projekt wird von SIG Instrumentation betreut
Die Teilnahme an der Kubernetes-Community unterliegt dem Kubernetes-Verhaltenskodex.