クラスタ オートスケーラーについて
このトピックでは、ノードプールのサイズを自動的に制御するクラスタ オートスケーラーについて説明します。
ノードプールの自動スケーリング
クラスタ オートスケーラーは、ワークロードの需要に基づいて、特定のノードプール内のノード数を自動的に変更します。ノードを手動で追加または削除する必要はありません。また、ノードプールを過剰にプロビジョニングする必要もありません。ノードプールの最小サイズと最大サイズを指定するだけで、あとは自動的に設定されます。
クラスタの自動スケーリング中にリソースを削除または移動する必要がある場合は、ワークロードが一時的に中断する可能性があります。たとえば、ワークロードが 1 つのレプリカを持つコントローラで構成されている場合は、現在のノードを削除すると、レプリカの Pod は別のノードに再スケジュール設定される可能性があります。このため、一時的な中断が発生する可能性を許容するようにワークロードを設計するか、重要な Pod で割り込みが発生しないように設計する必要があります。
クラスタ オートスケーラーの仕組み
クラスタ オートスケーラーはノードプール単位で機能します。クラスタ オートスケーラーを使用してノードプールを構成する場合は、ノードプールの最小サイズと最大サイズを指定します。ノードプールの作成またはノードプールの更新時に、最小サイズと最大サイズを変更できます。
クラスタ オートスケーラーは、実際のリソース使用率ではなく、ノードプール内のリソース要求に基づいて、ノードプールのサイズを自動的に増減します。クラスタ オートスケーラーは、Pod オブジェクトがスケジュール不可能であり、リクエストに対応するためのノードプール内の容量が不足している場合にノードを追加します。
クラスタ オートスケーラーは、ノードが十分に活用されておらず、すべての Pod オブジェクトが少数のノードでスケジュールされる可能性がある場合にも、ノードを削除します。ノードが 10 分後に正常にドレインされなかった場合、ノードは強制終了されます。この期間は構成できません。
Pod がリクエストするリソースが少なすぎる場合(たとえば、デフォルト値が過小な場合)、クラスタ オートスケーラーは状況を改善できません。クラスタ オートスケーラーが正常に動作するように、すべてのワークロードで適切なリソース リクエストを行う必要があります。詳細については、コンテナのリソースの管理をご覧ください。
動作条件
クラスタ オートスケーラーは、次のことを前提としてノードプールのサイズを変更します。
- 複製対象のすべての Pod オブジェクトを、他のノードで再起動できるものとします。これにより、短い中断が発生する可能性があります。ワークロードが中断を容認しない場合は、自動スケーリングを無効にしてノードプールで実行するようにワークロードを構成します。詳細については、ノード taint を使用してスケジューリングを制御するをご覧ください。
- クラスタ オートスケーラーは、手動で行ったノード管理オペレーションをオーバーライドできます。
- 1 つのノードプール内のすべてのノードは同じラベルセットを持つものとします。
- クラスタ オートスケーラーは、スケールアップ後にアイドル状態の CPU または未使用のメモリを持つ最小限のノードグループを選択します。この動作は、同じクラスタ内に異なるサイズのノード(たとえば、ハイ CPU やハイメモリ ノード)がある場合に、どのノードプールがスケールアップされるかに影響します。
ノードプールの最小サイズと最大サイズ
min-nodes
フラグと max-nodes
フラグを使用して、クラスタ内の各ノードプールの最小サイズと最大サイズを指定できます。自動スケーリングを無効にするには、min-nodes
と max-nodes
を同じ値に設定します。クラスタ オートスケーラーは、このサイズの範囲内でスケーリングの決定を実行します。
ノードプールの最大サイズを設定する際には、すべてのワークロードを実行するのに十分な大きさであることを確認してください。クラスタ内のノードプールにすべてのワークロードを実行するのに十分なメモリと CPU がない場合、停止する可能性があります。
PodDisruptionBudget を使用してワークロードを保護する
PodDisruptionBudget を使用すると、GKE on Azure を構成してワークロードの中断を防ぐことができます。PodDisruptionBudget を作成するときは、使用可能な Pod レプリカの最小数、または任意の時点で使用できない可能性がある Pod レプリカの最大数を指定します。詳細については、アプリケーションの停止予算を指定するをご覧ください。