大規模なクラスターやレイテンシーの影響を受けやすいワークロードでノードの自動スケーリングが不十分な場合は、ノードのインスタントスケーリングを有効にすることで、ノードのプロビジョニングを高速化し、コストを削減できます。
始める前に
これらの概念については、「ノードスケーリング」をご確認ください:
-
ノードインスタントスケーリングの仕組み
-
メリットとサポートされるユースケース
-
使用上の注意
-
予期しない課金を避けるため、従量課金インスタンスを使用してください。スケールイン中、サブスクリプションインスタンスはクラスターから削除されますが、アカウントからはリリースされません。
前提条件と制限事項
-
Kubernetes 1.24 以降の ACK マネージドクラスターまたは ACK 専用クラスター。詳細については、「クラスターを手動でアップグレードする」をご参照ください。
-
Auto Scaling が有効化されていること。
-
ノードインスタントスケーリングノードプール用の vSwitch には、十分な IP アドレスが必要です。DescribeVSwitchAttributes を呼び出して、利用可能な IP を確認してください。
IP アドレスが不十分な場合は、「セカンダリ CIDR ブロックを追加してクラスターの IP 容量を拡張する」をご参照ください。
-
ノードインスタントスケーリングは、標準 スケーリングモード ノードプールでのみ機能します。スウィフト モードはサポートされていません。
-
ACK GOATScaler v0.5.2 以前では、オフラインノードを手動で削除してください。詳細については、「FAQ」をご参照ください。
-
ACK 専用クラスターでは、ノードに ACK GOATScaler をデプロイまたは更新するための十分なリソースがない場合、スケーリングが失敗する可能性があります。
ステップ 1: ノードインスタントスケーリングの有効化
ノードインスタントスケーリングを使用するには、ノードプールページでクラスターオートスケーリングを有効にします。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
ノードプール ページで、有効化 の横にある ノードスケーリング をクリックします。
-
プロンプトが表示された場合は、Auto Scaling を有効にし、必要な権限を付与します。
-
ACK マネージドクラスター: AliyunCSManagedAutoScalerRole ロールを承認します。
-
ACK 専用クラスター: KubernetesWorkerRole ロールを承認し、AliyunCSManagedAutoScalerRolePolicy をアタッチします。
ノードのスケーリング設定 ダイアログボックスで、事前チェックに合格した後、RAM ロールのリンク (
KubernetesWorkerRole-xxxxなど) をクリックして、RAM コンソールで承認を完了します。
-
-
ノードのスケーリング設定 ページで、ノードスケーリングプラン を インスタントエラスティック に設定し、スケーリングパラメーターを設定して、OK をクリックします。
スケーリングコンポーネントは、スケジューリング条件に基づいてノードのスケールアウトを自動的にトリガーします。
ノードスケーリングプラン は、いつでも Auto Scaling に切り替えることができます。画面の指示に従ってください。この機能はベータ版です。参加するには、チケットを起票してください。
パラメーター
説明
[スケールインしきい値]
ノードの自動スケーリングが有効になっているノードプールの場合、これはリクエストされたリソース (Request) とノードあたりの合計リソース容量の比率です。
ノードは、この比率がしきい値を下回った場合、つまりノードの CPU およびメモリ使用量がともに [スケールインのしきい値] を下回った場合にのみ、スケールインできます。
[GPU スケールインしきい値]
GPU インスタンスのスケールインしきい値。
GPU ノードは、ノード上の CPU、メモリ、GPU の使用率がすべて [GPU スケールインのしきい値] を下回った場合にのみ、スケールインの対象となります。
[スケールイン開始遅延時間]
スケールインの必要性を検出してから実際にスケールインを実行するまでの時間。単位:分。デフォルト値:10 分。
重要エラスティシティ コンポーネントは、[スケールインしきい値]が満たされ、かつ[スケールイン トリガー遅延]が経過した後にのみ、ノードをスケールインする場合があります。
ステップ 2: 自動スケーリング用のノードプールの設定
ノードインスタントスケーリングは、オートスケーリングが有効になっているノードプールにのみ適用されます。
-
ノードプールを作成し、スケーリングモード を [自動] に設定します。
-
既存のノードプールを編集して、スケーリングモード を [自動] に変更します。
推奨:スケールアウト時に十分なキャパシティを確保するために、複数のインスタンスタイプとアベイラビリティーゾーンを設定します。
(オプション) ステップ 3: 設定の確認
自動スケーリングがアクティブであり、ACK GOATScaler がインストールされていることを確認します。
ノードプールのステータスの確認
ノードプール ページで、ノードプールに [自動スケーリング] タグが表示されていることを確認します。
アドオンのインストールの確認
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
アドオン管理 ページで、ACK GOATScaler アドオンのステータスが インストール済み であることを確認します。
ノードインスタントスケーリング の主要イベント
ノードインスタントスケーリング機能は、次のイベントを生成します:
|
イベント名 |
オブジェクト |
説明 |
|
ProvisionNode |
|
ノードのスケールアウトが正常にトリガーされました。 |
|
ProvisionNodeFailed |
|
ノードのスケールアウトのトリガーに失敗しました。 |
|
ResetPod |
|
スケールアウトをトリガーしたスケジュール不可能な Pod が、再試行のために再キューイングされます。 |
|
InstanceInventoryStatusChanged |
|
設定されたインスタンスタイプの利用可能な在庫が変更されたときに発行されます。 詳細については、「ノードインスタントスケーリングのヘルスステータスの表示」をご参照ください。 |
ノードインスタントスケーリング 識別子
これらの識別子はシステムによって管理されます。変更すると、予期しないスケーリング動作が発生する可能性があります。
ノードラベル
-
goatscaler.io/managed=trueまたはk8s.aliyun.com=true:ノードインスタントスケーリングによって管理されるノードを識別します。スケールイン条件を評価するために使用されます。 -
goatscaler.io/provision-task-id:{task-id}:スケールアウトタスク ID。トレーシングに使用されます。
ノード Taint
-
goatscaler.io/node-terminating:この Taint を持つノードは、スケールイン対象としてマークされます。
Pod アノテーション
-
goatscaler.io/provision-task-id:この Pod のスケールアウトタスク ID。システムは、さらなるスケールアウトをトリガーする前に、ノードの起動を待ちます。 -
goatscaler.io/reschedule-deadline:Pod スケジューリングのタイムアウト。この期限を過ぎてもスケジュール不可能な場合、Pod は再キューイングされ、別のスケールアウトをトリガーできます。
よくある質問
カテゴリ | サブカテゴリ | リンク |
ノードの高速スケーリングのスケーリング動作 | ||
カスタムスケーリング動作 | ||
関連操作
ヘルスステータスの表示
ノードインスタントスケーリング機能は、ECS インベントリに基づいてインスタンスタイプと可用性ゾーンを選択します。インベントリの状態を監視し、インスタンスタイプの推奨を取得するには、ノードプール ConfigMap を確認してください。
詳細については、「ノードインスタントスケーリングのヘルスステータスの表示」をご参照ください。
ログ収集の有効化
ACK マネージドクラスターでは、コントロールパネルコンポーネントのログ ページから ACK GOATScaler ログを収集します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
コントロールパネルコンポーネントのログ タブで、コンポーネントの更新 をクリックし、ACK GOATScaler を選択します。
[コンポーネントの更新] ダイアログボックスで、
ack-goatscalerを選択し、 [OK] をクリックします。更新後、ドロップダウンリストから ACK GOATScaler を選択すると、ログを表示できます。
ACK GOATScaler の アップグレード
最新機能を利用するために、ACK GOATScaler を最新の状態に保ってください。詳細については、「コンポーネントの管理」をご参照ください。
プライベートプールでの在庫チェックのスキップ
容量を保証するためにプライベートプールを使用する場合、SkipInventoryCheck を有効にして、ACK GOATScaler が在庫チェックをバイパスし、プライベートプールのリソースを直接使用できるようにします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
コアコンポーネント ページで、ACK GOATScaler を見つけ、 [設定] をクリックします。
ACK GOATScaler v0.3.0-582e405-aliyun 以降が必要です。
-
SkipInventoryCheckを true に設定します。