Fehlerbehebung bei Problemen mit dem Metrik-Server in Kubernetes-Clustern
Erfahren Sie, wie Sie häufige Probleme mit dem Metrics-Server in Ihrem Kubernetes-Cluster beheben können, einschließlich Symptomen, Ursachen und einer Schritt-für-Schritt-Anleitung.
Virtuelle Private Cloud Klassische Infrastruktur
Die folgenden Symptome können darauf hindeuten, dass die metrics-server-Ressourcen angepasst werden sollten:
-
metrics-serverwird häufig neu gestartet. -
Das Löschen eines Namensbereichs führt dazu, dass der Namensbereich in einem
Terminating-Status blockiert wird undkubectl describe namespaceeine Bedingung enthält, die einen Fehler bei der Metrik-API-Erkennung meldet. -
kubectl top pods,kubectl top nodes, andere Befehlekubectloder Anwendungen, die mithilfe der Kubernetes-API Kubernetes-Fehler wie die folgenden protokollieren:The server is currently unable to handle the request (get pods.metrics.k8s.io)Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request -
Horizontal Pod Autoscalers (HPAs) skalieren keine Bereitstellungen.
-
Die Ausführung von
kubectl get apiservices v1beta1.metrics.k8s.ioführt zu einem Status wie dem folgenden:NAME SERVICE AVAILABLE AGE v1beta1.metrics.k8s.io kube-system/metrics-server False (FailedDiscoveryCheck) 139d
Ihr Cluster verfügt über einen Metrikservice, der von der metrics-server-Bereitstellung im Namensbereich kube-system bereitgestellt wird. Die metrics-server-Ressourcenanforderungen und -Grenzwerte basieren
auf der Anzahl der Knoten im Cluster und sind für Cluster mit maximal 30 Pods pro Workerknoten optimiert. Wenn die Speicheranforderungen zu niedrig sind, kann dies mit Fehlern aufgrund abnormaler Speicherbedingungen fehlschlagen und sehr langsam
reagieren. Wenn die CPU-Anforderungen zu niedrig sind, können Aktivitäts-und Bereitschaftsprüfungen aufgrund der CPU-Regulierung fehlschlagen.
Probleme mit metrics-server können auch Probleme in anderen Bereichen verursachen. Die Metrik-APIs sind nicht verfügbar, wenn die Steuerungsebene nicht in der Lage ist, über Konnectivity mit dem Metrik-Server zu kommunizieren. Webhooks
für Zugangssteuerung können verhindern, dass die Steuerebene Pods erstellt, einschließlich des Pods metrics-server.
Führen Sie die folgenden Schritte aus, um Fehler zu beheben.
-
Stellen Sie sicher, dass Metrik-Server-Pods vorhanden sind.
kubectl get pod -n kube-system -l k8s-app=metrics-serverWenn keine Pods aufgelistet werden, liegt wahrscheinlich ein Problem mit einem
admission-control-Webhook vor. Siehe Warum schlagen Clusteroperationen aufgrund eines fehlerhaften Webhooks fehl?. -
Überprüfen Sie, ob der API-Server eine Verbindung mit
metrics-serverherstellen kann.kubectl logs POD -n kube-system -c metrics-server --tail 5Ersetzen Sie
PODdurch den zuvor angezeigten Podnamen. Der Inhalt der zurückgegebenen Protokolle spielt keine Rolle.Wenn Sie eine Fehlernachricht erhalten, die Text wie
<workerIP>:10250: getsockopt: connection timed outenthält, lesen Sie den Abschnitt Zeitlimitüberschreitung beikubectl-Befehlen. -
Wenn die vorherigen Schritte kein Problem anzeigen, passen Sie die Ressourcen für
metrics-serveran. Siehe Providerressourcen für Clustermetriken anpassen.