メインコンテンツへスキップ
orchestrator、ingest、worker では、それぞれ nodeSelector、tolerations、affinity、podAnnotations を指定できます。

amd64 で実行する

FineParser のコンテナイメージは linux/amd64 向けにのみビルドされています。クラスターで arm64 ノードも稼働できる場合は、すべてのコンポーネントを amd64 ノードに固定してください:
fineparser-values.yaml

ワーカーに専用のノードを割り当てる

大規模なプールは、配置が許可されているすべてのノードを占有してしまう可能性があります。ワーカーは taint を設定した専用のノードグループに配置し、Orchestrator と取り込みサービスは別のノードで実行してください。fineparser.abbyy.com/pool=worker のラベルと taint が設定されたノードの場合は、次のようになります。
fineparser-values.yaml

ワーカーイメージの事前プル

新しいノード上で多数のワーカーが一斉に起動すると、各ワーカーのイメージプルが kubelet のプルレート制限に達し、一斉起動が遅くなることがあります。worker.prepull を有効にすると、ワーカーはノードでのイメージのプルが一度完了するまで待機します。
fineparser-values.yaml
ワーカーノードは、キーが taintKey の NoSchedule taint を付与した状態で登録する必要があります。DaemonSet が新しいノードごとにイメージをプルし、その後 taint を削除します。
  • Karpenter: NodePool の startupTaints にこの taint を指定します。
  • Cluster Autoscaler: ノードグループのノードを、この taint を付与した状態で作成します。デフォルトのキーに付いているプレフィックスにより、Cluster Autoscaler はこの taint を一時的なものとして扱います。
images.worker.pullPolicy は IfNotPresent に設定する必要があり、worker.tolerations でこの taint を許容しないようにしてください。この機能を有効にすると、Node の取得とパッチ適用が可能な ClusterRole が作成されます。

ノードのドレインと中断

停止処理に入ったワーカーは、600 秒の猶予期間内に、処理中のユニットを完了させてから停止します。ノードのオートスケーラーでドレイン時間を制限している場合は、ワーカーノードに少なくともこの時間を確保してください。ユニットの処理途中で停止したワーカーはそのユニットを失いますが、リースの有効期限が切れた後、別のワーカーがそのユニットを再試行します。 この仕組みにより、ワーカーは Spot またはプリエンプティブルなキャパシティで実行できます。一方、Orchestratorと取り込みは通常のキャパシティで実行してください。Orchestratorはキューを保持しているため、再起動中は API を利用できなくなります。