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 が作成されます。
