Azure Kubernetes Service 環境のスケーラビリティに関する考慮事項
Azure Kubernetes Service (AKS) は、GPU などの特殊な機能を備えたノード プールを追加することでインフラストラクチャのニーズ (容量の増減が必要) に応じて、またはアプリケーションのニーズに応じてスケールイン/アウトすることができます。この場合、コンカレント接続の数と速度、要求数、AKS アプリケーションでのバックエンド待機時間などのいくつか点を考慮します。
AKS の最も一般的なスケーラビリティ オプションは、クラスター自動スケーラー と 水平ポッド自動スケーラーです。 クラスター自動スケーラーを使用すると、ノード プール内の要求されたコンピューティング リソースに基づいてノードの数が調整されます。 水平ポッド自動スケーラー (HPA) を使用すると、CPU 使用率やその他の構成されたメトリックに応じて、デプロイ内のポッド数が調整されます。
設計上の考慮事項
次に、考慮すべき重要な点をいくつか示します。
アプリケーションで、迅速なスケーラビリティが必要とされているか (時間が切迫している)。
- ポッドを迅速にプロビジョニングするには、仮想ノードを使用します。これは、Linux ノード/ポッドでのみサポートされています。
ワークロードに時間的な制約がなく、中断が処理可能であるか。 スポット VM の使用を検討します。
基盤となるインフラストラクチャ (ネットワーク プラグイン、IP 範囲、サブスクリプションの制限、クォータなど) はスケールアウトに対応しているか。
スケーラビリティの自動化を検討する
- クラスターの自動スケールを有効にすると、ノードの数をスケーリングできます。 クラスターの自動スケールと 0 へのスケーリングを検討します。
- 水平ポッド自動スケーラーでは、ポッドの数が自動的にスケーリングされます。
マルチゾーンとノード プールでのスケーラビリティを検討する
- ノード プールを作成する際には、AKS を使用して Availability Zones を設定することを検討します。
- さまざまな要件があるアプリケーションをサポートするために、複数のノード プールを使用することを検討します。
- クラスター自動スケーラーを使用してノード プールをスケーリングします。
- ユーザー ノード プールを 0 にスケーリングすることができます。 制限事項を参照してください。
設計の推奨事項
設計に関する次のベスト プラクティスに従ってください。
- 仮想マシン スケール セット (VMSS) を使用します。これは、自動スケール、複数のノード プール、Windows ノード プールのサポートなどのシナリオに必要です。
- Azure portal において、または Azure CLI を使用して、VMSS スケーラビリティ設定を手動で有効にしたり、編集したりしないでください。 代わりに、クラスター オートスケーラーを使用します。
- 高速バースト自動スケールを行う必要がある場合は、迅速かつ無制限のスケーラビリティと秒単位の請求のために、Container Instances と仮想ノードを使用して AKS クラスターからバーストすることを選択します。
- VM ベースのワーカー ノードを使用して予測可能なスケーラビリティを実現するには、クラスター自動スケーラーを使用し、0 にスケーリングします。
- クラスター自動スケーラーを有効にして、アプリケーションの要求を満たします。
- 複数のノード プールに対して自動スケールを有効にすることができます。
- 水平ポッド自動スケーラー (HPA) を有効にして、アプリケーションのビジー時間を短縮します。
- すべてのコンテナーとポッドでは、リソース要求と制限が定義されている必要があります。
- HPA では、観測されたリソース制限 (CPU/メモリまたはカスタム メトリック) に基づいて、ポッドの数が自動的にスケーリングされます。
- コンテナーの Azure Monitor とライブ監視を有効にして、クラスターとワークロードの使用率を監視します。
- アプリケーションのリソース要件が異なる場合は、複数のノード プールを使用します。
- ノード プールの VM サイズを指定できることに注意してください。
- 中断と削除を処理可能な、時間的な制約がないワークロードには、スポット VM ベースのノード プールを検討します。