Passer au contenu principal
orchestrator, ingest et worker acceptent chacun les paramètres nodeSelector, tolerations, affinity et podAnnotations.

Exécution sur amd64

Les images FineParser sont compilées uniquement pour linux/amd64. Si votre cluster peut également exécuter des nœuds arm64, forcez l’architecture de chaque composant :
fineparser-values.yaml

Attribuer des nœuds dédiés aux unités de traitement

Un pool de grande taille peut saturer tous les nœuds sur lesquels il est autorisé à s’exécuter. Placez les unités de traitement sur un groupe de nœuds dédié et doté d’un taint, et exécutez l’orchestrateur et le service d’ingestion sur d’autres nœuds. Pour des nœuds portant le label et le taint fineparser.abbyy.com/pool=worker :
fineparser-values.yaml

Pré-téléchargement de l’image de l’unité de traitement

Lorsque de nombreuses unités de traitement démarrent en même temps sur un nouveau nœud, leurs téléchargements d’image peuvent atteindre la limite de débit de téléchargement du kubelet et ralentir ce pic de démarrage. Lorsque worker.prepull est activé, les unités de traitement attendent que le nœud ait téléchargé l’image une première fois.
fineparser-values.yaml
Les nœuds de travail doivent s’enregistrer avec un taint NoSchedule dont la clé est taintKey. Un DaemonSet récupère l’image sur chaque nouveau nœud, puis supprime le taint.
  • Karpenter : ajoutez le taint aux startupTaints du NodePool.
  • Cluster Autoscaler : créez les nœuds du groupe de nœuds avec ce taint. Le préfixe de la clé par défaut signale à Cluster Autoscaler que le taint est temporaire.
images.worker.pullPolicy doit être défini sur IfNotPresent, et worker.tolerations ne doit pas tolérer le taint. L’activation de cette fonctionnalité crée un ClusterRole autorisé à lire et à modifier (patch) les Nodes.

Drainage des nœuds et interruptions

Une unité de traitement en cours d’arrêt termine d’abord l’unité qu’elle traite, dans un délai de grâce de 600 secondes. Si l’outil de mise à l’échelle automatique de vos nœuds limite la durée de drainage, prévoyez au moins ce délai sur les nœuds de travail. Si une unité de traitement est arrêtée en cours d’unité, cette unité est perdue ; une autre unité de traitement la relance une fois le bail expiré. C’est pourquoi les unités de traitement peuvent s’exécuter sur des capacités Spot ou préemptibles. Exécutez en revanche l’orchestrateur et le service d’ingestion sur des capacités standard : l’orchestrateur gère la file d’attente, et l’API est indisponible pendant son redémarrage.