ご利用の ACK クラスターが保留中の Pod をスケジュールできない場合、ノードスケーリングを使用してノードを自動的に追加または削除できます。ACK は ノードの自動スケーリングおよび ノードインスタントスケーリングを提供しています。ノードの自動スケーリングと比較して、ノードインスタントスケーリングの方が高速かつシンプルです。
前提条件
このトピックを読み、ACK のノードスケーリングソリューションについて理解し、ノードスケーリングを有効にする前にワークロードに最適なソリューションを選択してください。
Kubernetes 公式ドキュメントで、手動スケーリング、自動スケーリング、水平スケーリング、垂直スケーリングについて確認してください。
ノードスケーリングの仕組み
Kubernetes のノードスケーリングは、従来のリソース使用率しきい値モデルとは異なります。データセンターまたは他のオーケストレーションシステムから Kubernetes へ移行する際には、この点に注意が必要です。
従来のスケーリングモデルでは、CPU またはメモリ使用率がしきい値を超えるとノードが追加されます。ただし、このモデルには以下の課題があります。
ACK は、この問題に対処するためにノードスケーリング(リソースレイヤー)とワークロードスケーリング(スケジューリングレイヤー)を採用しています。ノードスケーリングは、Pod のリソース使用率に基づいてスケーリングをトリガーします。
スケーリングソリューション:ノードの自動スケーリングおよびノードインスタントスケーリング
ノードスケーリングはリソースレベルの機能であり、クラスター内のノード数を自動的に調整します。既存の容量が Pod スケジューリングに不十分な場合、オートスケーラは追加ノードをプロビジョニングします。
ACK は ノードスケーリングのための 2 つのソリューションを提供しています。
概要
-
クラスター内で実行できるスケーリングコンポーネントは 1 つだけです。2 つのソリューションを同時に使用することはできません。ノードスケーリングを有効にするには、「ノードの自動スケーリングを有効化する」および「ノードインスタントスケーリングを有効化する」をご参照ください。
-
このトピックに記載されているスケーリング統計は、カスタムイメージに基づく理論値です。実際の環境での結果は異なる場合があります。詳細については、「カスタムイメージによるスケーリングの最適化」をご参照ください。
-
両方のスケーリングソリューションは、自動スケーリングが有効なノードプール内のノードに適用されます。
|
ソリューション |
コンポーネント |
説明 |
|
ソリューション 1:ノードの自動スケーリング |
cluster-autoscaler |
クラスターの状態をラウンドロビン方式でチェックし、条件が満たされた場合にノードをスケーリングします。 |
|
ソリューション 2:ノードインスタントスケーリング |
ACK GOATScaler |
イベント駆動型のノードオートスケーラで、大規模クラスターや連続的なスケールアウトシナリオにおいて効率的なリソース提供を保証します。クラスターは、自動スケーリング機能が有効なノードプールに 100 ノード以上含まれるか、クラスター内に自動スケーリング機能が有効なノードプールが 20 以上存在する場合、大規模とみなされます。 スケーリング速度:45 秒、成功率:99 %、リソースフラグメント削減率:30 %。拡張性のためにカスタムスケーリングポリシーをサポートしています。 |
ソリューション比較
自動スケーリングが有効なノードプール(スウィフトモードなし)の場合、ノードインスタントスケーリング機能は既存のノードプール構成と互換性があり、すべての Pod タイプをサポートします。以下の表は、ノードインスタントスケーリングとノードの自動スケーリングを比較したものです。
|
メリット |
ノードの自動スケーリング |
ノードインスタントスケーリング |
|
スケーリング速度と効率 |
標準モードで 60 秒、スウィフトモードで 50 秒。 |
イベント駆動型スケーリングおよび Alibaba Cloud ContainerOS を使用し、各スケーリングアクティビティに 35~55 秒かかります。 |
|
自動スケーリングは 1 分でパフォーマンスボトルネックに達します。効率はノードプール数およびスケーリングシナリオによって変動し、100 以上のノードプールがある場合、所要時間は 100~150 秒に増加します。 |
ノードプール数または Pod 数が増加してもスケーリング所要時間は安定しており、高速スケーリングが必要なシナリオに適しています。 |
|
|
クラスター状態更新のラウンドロビンモード。最小遅延:5 秒。 |
イベント駆動型。遅延:1~3 秒。 |
|
|
リソーススケーリングの成功率 |
クラウドリソースインベントリの変動およびインスタンスタイプの多様性により、ノードの自動スケーリングの成功率は約 97 % です。 |
自動インベントリ選択ポリシーにより、数千の Alibaba Cloud インスタンスタイプを事前定義された条件および優先順位でフィルタリングし、指定タイプが利用不可の場合に最適なタイプまたは代替タイプを自動的に選択します。これにより運用保守が簡素化され、成功率が 99 % に向上します。 |
|
スケールアウトではノードプール構成のインスタンスタイプが使用されます。複数のタイプが指定されている場合、最低スペックのタイプが優先されます。 |
スケールアウトアクティビティに対して複数のインスタンスタイプを指定できます。 |
|
|
リソーススケーリングが失敗した場合、オートスケーラは定期的に再試行します。 |
指定されたインスタンスタイプが不足している場合、オートスケーラはアラートを生成できます。 |
|
|
使用方法と運用保守 |
ノードの自動スケーリングと比較して、ノードインスタントスケーリングは以下の点で使いやすくなっています。
|
|
|
スケジューリングポリシー |
ノードの自動スケーリングのスケジューリング機能に加え、ノードインスタントスケーリングは以下もサポートしています。
|
|
|
ノードインスタントスケーリングは、Bin PackingおよびPreBind(カスタム機能)ポリシーを使用して、リソースフラグメント率を 30 % 削減します。 |
||
使用制限: ノード インスタントスケーリング
以下は ノードインスタントスケーリング に適用される制限事項です。ノードインスタントスケーリング を有効にする前にご確認ください。
-
ノードインスタントスケーリングはスウィフトモードをサポートしません。
-
ノードプールは、1 回のスケールアウトバッチで最大 180 ノードまで含めることができます。
-
特定のクラスターに対してスケールインを無効化することはできません。
説明特定のノードに対してスケールインを無効化するには、「ノードインスタントスケーリングによるノードのスケールインを防止する方法」をご参照ください。
-
ノードインスタントスケーリングソリューションは、プリエンプティブインスタンスの在庫をチェックしません。ノードプールの課金方法がプリエンプティブインスタンスに設定されており、かつスポットインスタンスが不足している場合に従量課金インスタンスを使用が有効になっている場合、十分なプリエンプティブインスタンスが利用可能であっても従量課金インスタンスがスケールアウトされる可能性があります。
ノードスケーリングソリューションの選択
「ソリューション比較」および「ノードインスタントスケーリングの制限事項」をご参照ください。ワークロードのスケーリング速度および提供確実性に対する要求が低く、かつノードインスタントスケーリングの制限事項が許容できない場合は、ノードの自動スケーリングを選択してください。
ワークロードが以下のいずれかの要件を満たす場合、ノードインスタントスケーリングを推奨します。
-
大規模クラスターではノードの自動スケーリングの効率が著しく低下します。ノードインスタントスケーリングはクラスター規模がスケーリング効率にほとんど影響しないため、こちらを選択してください。クラスターは、自動スケーリング機能が有効なノードプールに 100 ノード以上含まれるか、クラスター内に自動スケーリング機能が有効なノードプールが 20 以上存在する場合、大規模とみなされます。
-
より高速なスケーリングが必要な場合。標準モードでは、ノードの自動スケーリングに 60 秒、ノードインスタントスケーリングに 45 秒かかります。
-
連続的なスケールアウトバッチが頻繁に発生する場合。ノードの自動スケーリングのパフォーマンスは低下し変動しますが、ノードインスタントスケーリングは一貫して約 45 秒のスケーリング時間を維持します。
注意事項
クォータと制限
-
VPC ルートテーブルは最大 200 件のカスタムルートエントリをサポートします。この上限を引き上げるには、クォータセンターで申請を提出してください。その他のリソースクォータについては、「基盤となるクラウドプロダクトのクォータ」をご参照ください。
-
自動スケーリングが有効なノードプールの最大ノード数を慎重に構成してください。VPC CIDR ブロックや vSwitch などの依存リソースおよびクォータが十分であることを確認しないと、スケールアウトアクティビティが失敗する可能性があります。ノードプールの制限事項については、「ノードの自動スケーリングを有効化する」をご参照ください。ネットワーク計画については、「ACK マネージドクラスターのネットワーク計画」をご参照ください。
-
ノードスケーリングはサブスクリプションノードをサポートしません。自動スケーリングが有効なノードプールを作成する際は、課金方法をサブスクリプションに設定しないでください。既存のノードプールについては、自動スケーリングを有効にする前にサブスクリプションノードが存在しないことを確認してください。
-
ノードスケーリング機能はSideCar Containersと互換性がありません。Sidecar Container ワークロードは、自動スケーリングが無効なノードプールにデプロイしてください。
依存リソースのメンテナンス
ノードスケーリングによって追加された ECS ノードに関連付けられた EIP がある場合、ECS コンソールからこれらのノードを直接削除しないでください。EIP は自動的にリリースされません。
参考資料
-
「ノードの自動スケーリングを有効化する」および「ノードインスタントスケーリングを有効化する」をご参照ください。
-
「ノードの自動スケーリングに関するよくある質問」をご参照ください。