セルフホストランナーのスケーリング

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server v4.x
This document is applicable to CircleCI Server v4.x
Server v3.x
This document is applicable to CircleCI Server v3.x

はじめに

CircleCI セルフホストランナーの固定のコンピューティングフリートを保持するには、ジョブがキューに入る率に応じてワークロードが変動するため、不要なコストが発生する可能性があります。 このコストを削減するために、必要に応じてコンピューティングフリートをスケーリングできます。

CircleCI ブログ より、AWS AutoScaling グループを使ってマシンランナーをスケーリングするためのサンプルを使ったチュートリアルをご覧いただけます。

コンテナランナー

Kubernetes でコンテナランナーを使用している場合、キューに入る作業量が増えると、Pod が自動的にスピンアップします。 これらの Pod は一時的な Pod であり、ジョブの実行が完了すると破棄されます。 Pod は作業に合わせて自動的にスケーリングされますが、Kubernetes クラスタの基盤となるコンピューティングはスケーリングされません。

データのスケーリング

マシンランナーやコンテナランナー用の Kubernetes クラスタをスケールするためのソリューションをセットアップする際に役立つ API エンドポイントが複数あります。

スケーリングソリューションにより、上記のエンドポイントを使って実行可能な待機タスクの合計数を計算することができます。 タスクデータエンドポイントのスコープは 1 つのリソースクラスにスコープされるため、使用可能なすべてのリソースクラスを照会し、実行中のタスクの合計数を取得することが重要です。

マシンランナーをご使用の場合は、スケーリングソリューションを使って、保留中の作業が多いリソースクラスにマシンランナーを追加できます。

マシンランナーのエージェントの設定

スケーリングソリューションで使用できるマシンランナーの設定がいくつかあります。特に、需要が減少した場合にリソースのクリーンアップをサポートできます。

  • ランナーモード

    • single-task モードを選択すると、マシンランナーは 1 つのタスクが終わるとシャットダウンします。 このモードは、マシンランナーの終了時にリソースが自動的にリサイクルされるので、完全に一時的なコンピューティングを使用する場合に便利です。

    • continuous モードを選択すると、マシンランナーはタスクの終了後に新しいタスクをポーリングします。 スケーリングソリューションにより、タスクのワークロードを監視し、使用していない マシンランナーを積極的にシャットダウンする必要があります。

  • ランナーのアイドル状態のタイムアウト

    • 需要が低い期間のリソースの自動リサイクルに、妥当なタイムアウトを設定することができます。