Zum Hauptinhalt springen
orchestrator, ingest und worker unterstützen jeweils nodeSelector, tolerations, affinity und podAnnotations.

Auf amd64 ausführen

FineParser-Images werden ausschließlich für linux/amd64 erstellt. Wenn Ihr Cluster auch arm64-Knoten umfassen kann, legen Sie jede Komponente fest auf diese Architektur fest:
fineparser-values.yaml

Eigene Knoten für Worker bereitstellen

Ein großer Pool kann jeden Knoten auslasten, auf dem er ausgeführt werden darf. Platzieren Sie Worker auf einer dedizierten Knotengruppe mit Taint, und betreiben Sie den Orchestrator und die Ingest-Komponente auf anderen Knoten. Für Knoten mit dem Label und Taint fineparser.abbyy.com/pool=worker:
fineparser-values.yaml

Vorab-Pull des Worker-Images

Wenn viele Worker gleichzeitig auf einem neuen Knoten starten, können ihre Image-Pulls das Pull-Ratenlimit des kubelet erreichen und den gleichzeitigen Start ausbremsen. Ist worker.prepull aktiviert, warten die Worker, bis der Knoten das Image einmal gepullt hat.
fineparser-values.yaml
Worker-Knoten müssen sich mit einem NoSchedule-Taint registrieren, dessen Schlüssel taintKey ist. Ein DaemonSet lädt das Image auf jeden neuen Knoten herunter und entfernt anschließend den Taint.
  • Karpenter: Tragen Sie den Taint in die startupTaints des NodePools ein.
  • Cluster Autoscaler: Erstellen Sie die Knoten der Knotengruppe mit dem Taint. Am Präfix des Standardschlüssels erkennt Cluster Autoscaler, dass der Taint nur vorübergehend ist.
images.worker.pullPolicy muss auf IfNotPresent gesetzt sein, und worker.tolerations darf den Taint nicht tolerieren. Wenn diese Funktion aktiviert ist, wird eine ClusterRole erstellt, die Nodes abrufen und patchen darf.

Knoten-Drains und Unterbrechungen

Ein Worker, der gestoppt wird, schließt zunächst seine aktuelle Einheit ab, und zwar innerhalb einer Karenzzeit von 600 Sekunden. Wenn Ihr Knoten-Autoscaler die Drain-Dauer begrenzt, sollten Sie auf Worker-Knoten mindestens diese Zeitspanne zulassen. Wird ein Worker mitten in einer Einheit gestoppt, geht diese Einheit verloren; ein anderer Worker verarbeitet sie erneut, sobald die Lease abgelaufen ist. Aus diesem Grund können Worker auf Spot- oder unterbrechbarer Kapazität laufen. Betreiben Sie den Orchestrator und die Ingest-Komponente hingegen auf regulärer Kapazität: Der Orchestrator verwaltet die Warteschlange, und während seines Neustarts ist die API nicht verfügbar.