すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ノードスケーリングの概要

最終更新日:Feb 17, 2025

Container Service for Kubernetes (ACK) Edgeクラスターは、リージョン間のECS (Elastic Compute Service) ノード、データセンターノード、他のクラウドサービスプロバイダーのノード、工場、小売店、自動車、船舶などのさまざまな環境にあるサーバーノードなど、オンラインとオフラインの両方でさまざまなノードリソースを管理できます。 オフラインノードリソースが不十分なシナリオでは、自動スケーリング機能により、ACK Edgeクラスターのクラウドノードをシームレスに拡張し、スケジューリング機能を強化できます。 この動的スケーリングはリソースを節約し、コストを大幅に節約します。

あなたが始める前に

ACKのノードスケーリングソリューションをより適切に使用し、ビジネスに最適なソリューションを選択するには、ノードスケーリング機能を有効にする前にこのトピックを読むことをお勧めします。

このトピックを読む前に、手動スケーリング、自動スケーリング、水平スケーリング、および垂直スケーリングの用語を理解することをお勧めします。 詳細については、「Kubernetes公式ドキュメント」をご参照ください。

仕組み

Kubernetesでのノードスケーリングは、リソース使用率のしきい値に基づく従来のスケーリングモデルとは異なります。 通常、データセンターや他のオーケストレーションシステムからKubernetesにビジネスを移行した後、ノードスケーリングの問題を修正する必要があります。

スケーリングしきい値はどのように決定されますか?

クラスター内のホットノードのリソース使用率は、通常、他のノードよりも高くなります。

  • クラスタ内のノードの平均リソース使用率に基づいてリソーススケーリングがトリガーされた場合、ホットノードのリソース使用率は他のノードに分散されます。 したがって、ホットノードのリソース利用率がしきい値を超えると、リソースをすぐにスケールアウトすることはできません。

  • 最も高いリソース使用率に基づいてリソーススケーリングがトリガーされた場合、通常、リソースの浪費が発生します。 これはクラスタ全体に悪影響を及ぼす。

ノードの追加後の負荷はどのように軽減されますか?

Kubernetesクラスターでは、ポッドはアプリケーションの最小配置可能単位です。 ポッドは異なるノードにデプロイされます。 ポッドのリソース使用率が高い場合、ポッドをホストするノードまたはクラスターがスケールアウトされても、アプリケーション用にデプロイされたポッドの数またはポッドのリソース制限は変更されません。 この場合、ノードの負荷を、新たに追加されたノードとバランスさせることができない。

ノードのスケーリングはどのようにトリガーおよび実行されますか?

リソース使用率に基づいてリソーススケーリングがトリガーされると、リソース要求が重く、リソース使用量が少ないポッドが追い出される可能性があります。 クラスターに多数の前述のポッドが含まれている場合、クラスター内のスケジュール可能なリソースは使い果たされます。 その結果、一部のポッドはスケジュール不可能になる。

スケールアウト活動はどのようにトリガーされますか?

ノードスケーリングモデルは、スケジュールに失敗したポッドをリッスンして、スケールアウトアクティビティが必要かどうかを判断します。 リソースが不足してポッドがスケジュールされない場合、ノードスケーリングモデルはポッドスケジューリングのシミュレーションを開始し、自動スケーリング機能が有効になっているノードプールを選択し、これらのポッドをホストするために必要なリソースを提供し、ノードプール内のノードをクラスターに追加します。

説明

スケジューリングシミュレーションでは、自動スケーリング機能が有効になっている各ノードプールを抽象化ノードとして扱います。 ノードプールの設定で指定されたインスタンスタイプは、ノードのCPU容量、メモリ容量、およびGPU容量に抽象化されます。 さらに、ノードプールのラベルおよびテイントは、ノードのラベルおよびテイントにマッピングされる。 スケジューラは、スケジューリングシミュレーション中に抽象化ノードをスケジューリング可能リストに追加する。 スケジューリング条件が満たされると、スケジューラは必要なノード数を計算し、ノードプール内のノードをクラスタに追加します。

スケールイン活動はどのようにトリガーされますか?

ノードスケーリングモデルは、自動スケーリング機能が有効になっているノードプール内のノードでのみスケーリングします。 自動スケーリング機能が有効になっているノードプールにないノードを含む、静的ノードを管理することはできません。 ノードスケーリングモデルは、各ノードをスケールイン条件と照合します。 ノードのリソース使用率がスケールインしきい値よりも低い場合、スケールインアクティビティがトリガーされます。 次に、ノードスケーリングモデルは、ノードでのポッドの削除をシミュレートして、ノードをドレインできるかどうかを確認します。 kube-system名前空間の非DaemonSetポッドとPodDisruptionBudgetポッドはノードをスキップし、他の候補ノードを選択します。 ノードは削除される前に排出されます。 ノード上のポッドが他のノードに追い出された後、ノードは削除されます。

自動スケーリングの成功率を向上させるにはどうすればよいですか?

自動スケーリングの成功率は、次の要因によって異なります。

  • スケジューリング条件が満たされているかどうか

    自動スケーリング機能を有効にしてノードプールを作成した後、ノードプールに適したポッドスケジューリングポリシーを確認する必要があります。 ポリシーを確認できない場合は、nodeSelectorを設定してノードプールのラベルを選択し、スケジューリングシミュレーションを実行します。

  • リソースが十分かどうか

    スケジューリングシミュレーションが完了すると、自動スケーリング機能が有効になっているノードプールが自動的に選択され、ノードプール内のノードがクラスターに追加されます。 ただし、ノードプール設定で指定されたElastic Compute Service (ECS) インスタンスタイプのインベントリは、スケールアウトアクティビティの成功率に影響します。 したがって、成功率を向上させるために、異なるゾーンに複数のインスタンスタイプを指定することを推奨します。

自動スケーリングを高速化するにはどうすればよいですか?

  • 方法1: 自動スケーリングを高速化するには、swiftモードを使用します。 自動スケーリング機能が有効になっているノードプールが、スケールアウトアクティビティとスケールインアクティビティを完了してウォームアップすると、ノードプールは迅速モードで実行されます。 詳細については、「ノードの自動スケーリングの有効化」をご参照ください。

  • 方法2: Alibaba Cloud Linux 3に基づくカスタムイメージを使用して、50% によるサービスとしてのインフラストラクチャ (IaaS) レイヤーでのリソース配信の効率を向上させます。 詳細については、「カスタムイメージの作成」をご参照ください。

ノードスケーリングソリューション

ノードスケーリングモデルは、リソース層でリソースをスケーリングします。 クラスターのサイズがポッドスケジューリング要件を満たさない場合、このモデルはノードリソースを自動的にスケーリングして、追加のスケジューリング容量を提供します。 ノードスケーリングは、クラスター自動スケーラーコンポーネントによって管理されます。このコンポーネントは、定期的にクラスター状態をポーリングして維持し、スケーリング要件を満たす条件を特定し、クラスターノードの数を自動的に調整します。

スケーリング速度と効率

  • スケーリングアクティビティには、標準モードで60秒、高速モードで50秒かかります。

  • スケーリングアクティビティの期間が1分に達すると、自動スケーリングでパフォーマンスのボトルネックが発生します。 自動スケーリングの効率は、ノードプールの数とスケーリングシナリオによって変動します。 たとえば、ノードプールの数が100を超えると、スケーリングアクティビティの期間は100〜150秒に増加します。

  • ポーリングモデルを使用し、クラスター状態のメンテナンスへの依存によって制約される場合、最小レイテンシは5秒です。

使用上の注意

クォータと制限

  • 仮想プライベートクラウド (VPC) のルートテーブルに最大200のカスタムルートエントリを追加できます。 クォータ制限を増やすには、クォータセンターコンソールにログインし、アプリケーションを送信します。 他のリソースのクォータとクォータ制限を増やす方法の詳細については、「クォータと制限」トピックの「依存クラウドサービスのクォータ」セクションをご参照ください。

  • 自動スケーリング機能を有効にして、ノードプール内のノードの最大数を適切に設定することを推奨します。 VPC CIDRブロックやvSwitchなど、指定された数のノードに対して依存リソースとクォータが十分であることを確認してください。 そうしないと、スケールアウト活動が失敗する可能性があります。 自動スケーリング機能が有効になっているノードプールでサポートされるノードの最大数の詳細については、「ノード自動スケーリングの有効化」をご参照ください。 ACKネットワークを計画する方法の詳細については、「ACKクラスターのネットワークを計画する」をご参照ください。

  • ノードスケーリング機能はサブスクリプションノードをサポートしていません。 自動スケーリング機能を有効にしてノードプールを作成する場合は、ノードプールの課金方法をサブスクリプションに設定しないでください。 既存のノードプールの自動スケーリング機能を有効にする場合は、ノードプールにサブスクリプションノードがないことを確認してください。

依存リソースのメンテナンス

ノードスケーリング機能によって追加されたECSノードにEIPアドレス (EIP) が関連付けられている場合、ECSコンソールでECSノードを直接削除しないでください。 そうしないと、EIPは自動的にリリースできません。

さらなる読書

ノードスケーリングの使用時に問題が発生した場合は、トラブルシューティングのためにノードスケーリングのFAQを参照してください。

拡大してノードスケーリングのFAQインデックスを表示

カテゴリ

サブカテゴリ

問題

ノード自動スケーリングのスケーリング動作

制限事項

スケールアウト動作

スケールイン動作

拡張サポート

cluster-autoscalerはCRDをサポートしていますか?

カスタムスケーリングの動作

ポッドを使用したスケーリングの管理

ノードを使用したスケーリングの管理

cluster-autoscalerに関する質問