Kubernetes-Metrikserver

Wenn Sie das Cluster-Add-on für Kubernetes-Metrikserver aktivieren, können Sie die folgenden Schlüssel/Wert-Paare als Argumente übergeben

Um den Kubernetes-Metrikserver als Cluster-Add-on zu verwenden, müssen Sie auch cert-manager (als Standalone-Produkt oder als Cluster-Add-on) bereitstellen. Wenn Sie cert-manager als Standalone-Produkt bereitstellen, setzen Sie das Konfigurationsargument skipAddonDependenciesCheck auf true.

Allgemeine Konfigurationsargumente für die meisten Cluster-Add-ons
Schlüssel (API und CLI) Anzeigename des Schlüssels (Konsole) Beschreibung Erforderlich/Optional Standardwert Beispielwert
affinity Affinität

Eine Gruppe von Affinitätsplanungsregeln.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Nvidia-GPU-Operator
Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie master.affinity
  • NVIDIA Network Operator, verwenden Sie operator.affinity
  • CSI-Treiber SMB, verwenden Sie contoller.affinity
  • AMD-GPU-Operator, controllerManager.affinity verwenden
Optional Null Null
nodeSelectors Knotenselektoren

Mit Knotenselektoren und Knotenlabels können Sie die Worker-Knoten steuern, auf denen Add-on-Pods ausgeführt werden.

Damit ein Pod auf einem Knoten ausgeführt werden kann, muss der Knotenselektor des Pods denselben Schlüssel/Wert wie das Label des Knotens aufweisen.

Setzen Sie nodeSelectors auf ein Schlüssel/Wert-Paar, das sowohl dem Knotenselektor des Pods als auch dem Label des Worker-Knotens entspricht.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • NVIDIA-GPU-Operator
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie worker.nodeSelector
  • NVIDIA Network Operator, verwenden Sie operator.nodeSelectors
  • AMD GPU-Operator, verwenden Sie selector oder controllerManager.nodeSelector
Optional Null {"foo":"bar", "foo2": "bar2"}

Der Pod wird nur auf Knoten ausgeführt, die das Label foo=bar oder foo2=bar2 aufweisen.

numOfReplicas numOfReplicas Die Anzahl der Replikate der Add-on-Bereitstellung.
Nicht verwendet von:
  • AMD-GPU-Plug-in
  • NVIDIA-GPU-Operator
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • CoreDNS, verwenden Sie nodesPerReplica
  • Knotenfeature Discovery, verwenden Sie master.replicaCount
  • AMD-GPU-Operator, controllerManager.replicas verwenden
Erforderlich 1

Erstellt ein Replikat des Add-on-Deployments pro Cluster.

2

Erstellt zwei Replikate des Add-on-Deployments pro Cluster.

rollingUpdate rollingUpdate

Steuert das gewünschte Verhalten der rollierenden Aktualisierung durch maxSurge und maxUnavailable.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Knotenfeature-Discovery
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • NVIDIA-GPU-Operator, daemonsets.rollingUpdate.maxUnavailable verwenden
  • AMD-GPU-Operator, verwenden upgradePolicy in devicePlugin, metricsExporter, testRunner, configManager oder draDriver
Optional Null Null
tolerations Toleranzen

Mit Taints und Toleranzen können Sie die Worker-Knoten steuern, auf denen Add-on-Pods ausgeführt werden.

Damit ein Pod auf einem Knoten mit einem Taint ausgeführt werden kann, muss der Pod eine entsprechende Toleranz aufweisen.

Setzen Sie tolerations auf ein Schlüssel/Wert-Paar, das sowohl der Podtoleranz als auch dem Taint des Worker-Knotens entspricht.

JSON-Format im Klartext oder Base64-codiert.

Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie master.tolerations und/oder worker.tolerations
  • NVIDIA-GPU-Operator, daemonsets.tolerations verwenden
  • NVIDIA Network Operator, verwenden Sie operator.tolerations
  • CSI-Treiber SMB, verwenden Sie controller.tolerations
  • AMD GPU-Operator, Toleranzen in devicePlugin, metricsExporter, testRunner, configManager, draDriver oder controllerManager verwenden
Optional Null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Nur Pods mit dieser Toleranz können auf Worker-Knoten ausgeführt werden, die den Taint tolerationKeyFoo=tolerationValBar:noSchedule aufweisen.

topologySpreadConstraints topologySpreadConstraints

So verteilen Sie passende Pods auf die angegebene Topologie.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Knotenfeature-Discovery
  • NVIDIA-GPU-Operator
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
  • AMD-GPU-Operator
Optional Null Null
Für dieses Cluster-Add-on spezifische Konfigurationsargumente
Schlüssel (API und CLI) Anzeigename des Schlüssels (Konsole) Beschreibung Erforderlich/Optional Standardwert Beispielwert
metrics-server.ContainerResources Metrics-Server-Containerressourcen

Sie können die Ressourcenmengen angeben, die von den Add-on-Containern angefordert werden, und Grenzwerte für die Ressourcennutzung festlegen, die von den Add-on-Containern nicht überschritten werden dürfen.

JSON-Format im Klartext oder Base64-codiert.

Optional Null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Erstellen Sie Add-on-Container, die 100 Millicores CPU und 100 Mebibyte Speicher anfordern. Begrenzen Sie Add-on-Container auf 500 Millicores CPU und 200 Mebibyte Arbeitsspeicher.

skipAddonDependenciesCheck skipAddonDependenciesCheck Gibt an, ob andere erforderliche Add-ons bereitgestellt wurden (z. B. das Add-on "cert-manager"). Optional Null true
Große Cluster – Überlegungen

In der folgenden Tabelle werden die Aspekte beim Konfigurieren dieses Cluster-Add-ons in großen Clustern beschrieben.

Argumentname Rollen, Anzahl Knoten Beschreibung Bei zunehmender Clustergröße Risiken Empfehlung
metrics-server.ContainerResources J

Definiert CPU- und Speicheranforderungen und Grenzwerte für den Metrikserver-Pod.

  • Scrape-Vorgänge werden linear erhöht, da der Metrikserver Metriken von jedem Knoten erfasst.
  • Die CPU-Auslastung erhöht sich für die Metrikerfassung und -verarbeitung.
  • Die Speicherauslastung erhöht sich, um aggregierte Metriken zu speichern.
  • Die Verfügbarkeit von Metriken kann länger dauern.

Wenn die Ressourcen zu klein sind:

  • Der Metrikserver-Pod wird möglicherweise beendet, weil er den Speichergrenzwert überschreitet.
  • CPU-Throttling kann zu langsamen oder verpassten Scrapes führen.
  • Die Metrik-API kann veraltete Daten bereitstellen oder nicht mehr verfügbar sein.
  • Horizontal Pod Autoscaler-Entscheidungen können verzögert oder ungenau sein.
  • Erhöhen Sie die CPU- und Speicherressourcen proportional zur Anzahl der Knoten.
  • Erhöhen Sie die CPU, um Ausschuss und Metrikverarbeitung zu unterstützen.
  • Speicher erhöhen, um die Metrikaggregation zu unterstützen.
  • Validieren Sie die Ressourcengröße durch Lasttests für Cluster mit mehr als 5.000 Knoten.
numOfReplicas N

Steuert die Anzahl der Metrikserver-Pods.

Jedes Replikat schneidet jeden Knoten ab. Der Metrikserver teilt die Scraping-Workload nicht auf Replikate auf. Daher bieten zusätzliche Replikate eine hohe Verfügbarkeit und keine zusätzliche Verarbeitungskapazität.

  • Zusätzliche Replikate generieren doppelten Scrape-Traffic.
  • Wenn Sie die Anzahl der Replikate erhöhen, wird der Ausschussdurchsatz nicht verbessert.
  • Verwenden Sie zwei oder drei Replikate, um High Availability bereitzustellen.
  • Erhöhen Sie nicht die Anzahl der Replikate, um die Performance zu verbessern.
affinity / nodeSelectors / tolerations N

Steuern Sie die Platzierung von Metrikserver-Pods.

Metrics Server ist eine Control-Plane-kritische Komponente. Die Platzierung wirkt sich auf die Servicestabilität und die Verfügbarkeit von Ressourcenmetriken aus.

Wenn diese Argumente nicht richtig konfiguriert sind:

  • Pods können auf instabilen oder ressourcenbeschränkten Knoten ausgeführt werden.
  • Pods können neu gestartet werden.
  • Die Leistung könnte reduziert werden.
  • Intermittierende Lücken können in der Verfügbarkeit von Metriken auftreten.
  • Führen Sie den Metrikserver auf stabilen Knoten mit geringer Abwanderung und ausreichenden Ressourcen aus.
  • Bevorzugt dedizierte Infrastruktur- oder Systemknotenpools.
  • Konfigurieren Sie Toleranzen, wenn die Zielknoten verfälscht sind.
rollingUpdate N

Steuert die Deployment-Aktualisierungsstrategie für den Metrikserver.

Durch die Ausfallzeit des Metrikservers ist die Metrik-API nicht verfügbar. Außerdem wird verhindert, dass Horizontal Pod Autoscaler ordnungsgemäß funktioniert, und kubectl top -Befehle werden nicht erfolgreich ausgeführt.

Wenn dieses Argument nicht richtig konfiguriert ist:

  • Alle Replikationen können gleichzeitig neu gestartet werden.
  • Die Metrikpipeline ist möglicherweise vorübergehend nicht verfügbar.
  • Konfigurieren Sie maxUnavailable sorgfältig.
  • Stellen Sie sicher, dass mindestens ein Metrikserverreplikat während eines Updates aktiv bleibt.
  • Verwenden Sie eine schrittweise Rollout-Strategie.
topologySpreadConstraints N

Steuert, wie Metrikserver-Pods auf Knoten, Availability-Domains und andere Fehlerdomains verteilt werden.

  • Verhindert, dass alle Replikate auf demselben Knoten oder in derselben Availability-Domain ausgeführt werden.
  • Verbessert die Resilienz gegenüber Knoten- und Availability-Domain-Ausfällen.
  • Hinzu kommt eine geringe Planungskomplexität.

Wenn keine Topologie-Verteilungs-Constraints konfiguriert sind:

  • Alle Replikate können auf demselben Knoten oder in derselben Availability-Domain ausgeführt werden.
  • Ein einzelner Fehler kann zu einem vollständigen Metrikausfall führen.
  • Verteilen Sie Replikate nach Möglichkeit über Availability-Domains.
  • Replikate auf verschiedenen Knoten ausführen
  • Behalten Sie eine gleichmäßige Verteilung bei, um eine hohe Verfügbarkeit zu gewährleisten.
skipAddonDependenciesCheck N

Steuert, ob die Abhängigkeitsvalidierung während der Installation des Add-ons übersprungen wird.

Dieses Argument hat keine direkten Auswirkungen auf Performance oder Skalierbarkeit, wirkt sich jedoch auf die Bereitstellungszuverlässigkeit aus. In OKE hängt der Metrikserver von Komponenten wie Certificate Manager ab.

Wenn die Abhängigkeitsvalidierung übersprungen wird:

  • Das Add-on wird möglicherweise ohne erforderliche Abhängigkeiten installiert.
  • Die Metrikpipeline funktioniert möglicherweise nicht.
  • Laufzeitfehler können auftreten.
  • Die Fehlerbehebung kann in einem großen Cluster schwieriger sein.
  • Abhängigkeitsvalidierung aktiviert lassen.
  • Überspringen Sie die Validierung nur in kontrollierten oder Testumgebungen oder wenn alle Abhängigkeiten manuell validiert wurden.