> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Grupos de nodos y programación

Cada uno de los componentes `orchestrator`, `ingest` y `worker` admite `nodeSelector`, `tolerations`, `affinity` y `podAnnotations`.

## Ejecución en amd64

Las imágenes de FineParser se compilan únicamente para `linux/amd64`. Si su clúster también puede ejecutar nodos `arm64`, fije todos los componentes a esa arquitectura:

```yaml fineparser-values.yaml theme={null}
orchestrator:
  nodeSelector:
    kubernetes.io/arch: amd64
ingest:
  nodeSelector:
    kubernetes.io/arch: amd64
worker:
  nodeSelector:
    kubernetes.io/arch: amd64
```

## Asigne nodos propios a los workers

Un pool grande puede ocupar todos los nodos en los que tiene permitido ejecutarse. Coloque los workers en un grupo de nodos dedicado y con taint, y mantenga el orquestador y el servicio de ingesta en otros nodos. Para nodos etiquetados y con el taint `fineparser.abbyy.com/pool=worker`:

```yaml fineparser-values.yaml theme={null}
worker:
  nodeSelector:
    kubernetes.io/arch: amd64
    fineparser.abbyy.com/pool: worker
  tolerations:
    - key: fineparser.abbyy.com/pool
      operator: Equal
      value: worker
      effect: NoSchedule
```

## Descarga previa de la imagen del worker

Cuando muchos workers se inician a la vez en un nodo nuevo, sus descargas de la imagen pueden alcanzar el límite de frecuencia de descargas del kubelet y ralentizar el arranque simultáneo. Con `worker.prepull` habilitado, los workers esperan a que el nodo haya descargado la imagen una vez.

```yaml fineparser-values.yaml theme={null}
worker:
  prepull:
    enabled: true
    taintKey: startup-taint.cluster-autoscaler.kubernetes.io/fineparser-image
```

Los nodos worker deben registrarse con un taint `NoSchedule` cuya clave sea `taintKey`. Un DaemonSet descarga la imagen en cada nodo nuevo y, a continuación, elimina el taint.

* **Karpenter:** incluya el taint en los `startupTaints` del NodePool.
* **Cluster Autoscaler:** cree los nodos del grupo de nodos con el taint. El prefijo de la clave predeterminada indica a Cluster Autoscaler que el taint es temporal.

`images.worker.pullPolicy` debe ser `IfNotPresent` y `worker.tolerations` no debe tolerar el taint. Al habilitar esta opción, se crea un ClusterRole con permisos para obtener (get) y modificar (patch) objetos Node.

## Vaciado de nodos e interrupciones

Un worker que se está deteniendo termina primero la unidad en curso, dentro de un período de gracia de 600 segundos. Si el escalador automático de nodos limita el tiempo de vaciado, conceda al menos ese tiempo en los nodos de trabajo. Si un worker se detiene a mitad de una unidad, esa unidad se pierde y otro worker la reintenta cuando expira la concesión.

Por este motivo, los workers pueden ejecutarse en capacidad Spot o interrumpible. Ejecute el orquestador y el servicio de ingesta en capacidad estándar: el orquestador mantiene la cola y la API no está disponible mientras se reinicia.
