ACK One 登録済みクラスターは、ノードプール内の予想ノード数を調整してノードプールをスケーリングし、予想ノード数に基づいてノード数を維持します。スケールアウト操作により、ビジネス運用をサポートするのに十分な数のノードが確保されます。スケールイン操作により、コストを節約できます。スケールアウト操作とスケールイン操作は、O&M 効率を向上させるために自動的に実行できます。
前提条件
ACK One 登録済みクラスターが作成され、データセンターにデプロイされた外部 Kubernetes クラスターが ACK One 登録済みクラスターに接続されていること。詳細については、「ACK One 登録済みクラスターを作成する」をご参照ください。
ノードプールが作成され、ノードプールのカスタムスクリプトが構成されていること。詳細については、「ノードプールを作成する」をご参照ください。
ノードプールのスケーリングの概要
予想ノード数とは、ノードプールに保持されるノードの数です。ノードプールが最終状態に達したときのノードプール内のノード数を示します。ノードプール内の予想ノード数を指定すると、ノードプール内のノードは指定された数に自動的にスケーリングされます。
ノードプールのスケールアウト
予想ノード数がノードプール内の現在のノード数よりも大きい数に設定されている場合、システムはスケールアウト操作をトリガーします。予想ノード数を増やすことで、ノードプールをスケールアウトできます。システムは、ノードプール内の現在のノード数が予想ノード数と一致するまで、ノードをノードプールに追加できない場合に自動的に再試行できます。
ノードプールのスケーリングプロセス中、課金は実際に作成および使用された仕様に基づいて行われます。たとえば、ノードプールに 2 つのタイプのインスタンス仕様が構成されていて、課金方法が [従量課金] で、[スケーリングポリシー] が [優先度] に設定されているとします。このスケーリング操作中に、タイプ A の 2 つのノードが最初の優先度の vSwitch のゾーンに追加されます。ノード A のリソースが不足している場合は、タイプ B の 3 つのノードが 2 番目の優先度の vSwitch のゾーンに追加されます。1 時間あたりのコストは、インスタンス仕様の単価に乗算されたノード数と課金期間として計算されます。つまり、(ノード A の単価 × 2 × 1)+(ノード B の単価 × 3 × 1)です。
システムは、ノードプールをスケールアウトするために次の手順を実行します。
ECS インスタンスの作成: ACK がノードプールをスケーリングするために使用する基盤となるサービスである Auto Scaling は、Elastic Compute Service(ECS)インスタンスを自動的に作成します。予想ノード数を変更すると、ACK はノードプールの構成に基づいてノードプールをスケールアウトするために、Auto Scaling のスケーリンググループ内の予想インスタンス数を自動的に変更します。ノードプールのステータスは「拡張中」に変わります。Auto Scaling が ECS インスタンスを作成すると、ノードプールのステータスは「アクティブ」に変わります。予想インスタンス数の機能の詳細については、「予想インスタンス数」をご参照ください。
重要GPU アクセラレーション ECS Bare Metal Instance ファミリー ebmgn7 および ebmgn7e のインスタンスは、Multi-Instance GPU(MIG)構成を自動的に削除できません。ACK が上記のインスタンスファミリーのインスタンスを追加すると、ACK はインスタンスに保持されている MIG 構成を自動的にリセットします。リセットには時間がかかる場合があります。この場合、インスタンスをクラスターに追加できない可能性があります。
この問題のトラブルシューティング方法の詳細については、「ECS Bare Metal インスタンスを追加できない場合の対処方法」をご参照ください。
ebmgn7e インスタンスファミリーの詳細については、「GPU コンピューティング最適化インスタンスファミリー(gn、ebm、scc シリーズ)」をご参照ください。
ECS インスタンスをクラスターに追加します。Auto Scaling によって ECS インスタンスが作成されると、ECS インスタンスは ACK によって管理されている
cloud-initスクリプトを自動的に実行してノードを初期化し、ノードプールに追加します。操作ログは、各ノードの /var/log/messages ファイルに保存されます。ノードにログインし、grep cloud-init /var/log/messagesコマンドを実行してログを表示できます。説明ノードがノードプールに追加されると、/var/log/messages ファイルの操作ログは自動的に削除されます。したがって、ログには、ノードをノードプールに追加できなかった場合の情報のみが記録されます。
ノードをノードプールに追加できなかった場合、/var/log/messages ファイル内の関連ログデータはタスク結果に同期されます。クラスター詳細ページの [クラスタータスク] タブでタスクの詳細を表示できます。
ノードプールのスケールイン
予想ノード数がノードプール内の現在のノード数よりも小さい数に設定されている場合、システムはスケールイン操作をトリガーし、ノードを削除します。
システムがノードプールをスケールインする場合:
スケーリングポリシーが「優先度」に設定されている場合、システムは新しく作成された ECS インスタンスをスケーリンググループから優先的に削除します。
スケーリングポリシーが「分散バランシング」に設定されている場合、システムはポリシーに基づいて ECS インスタンスがデプロイされているゾーンをフィルタリングします。次に、新しく作成された ECS インスタンスがスケーリンググループから優先的に削除され、スケーリンググループの異なるゾーンの ECS インスタンスの数が近いか同じになるようにします。
スケーリングポリシーが「コスト最適化」に設定されている場合、システムは vCPU 価格の降順でスケーリンググループから ECS インスタンスを削除します。
予想ノード数を変更してノードをスケールインする場合、ACK はノードをドレインせずにノードを削除できます。ノードを削除する前にドレインする場合は、指定されたノード削除方法を使用します。詳細については、「ノードプールからノードを削除する」をご参照ください。
ノードをスケールインする場合、サブスクリプション ECS インスタンスは解放されません。サブスクリプションインスタンスを解放する場合は、ECS コンソール にログインし、サブスクリプションインスタンスを従量課金ノードに変換してから解放します。サブスクリプションインスタンスを従量課金インスタンスに変更する方法の詳細については、「インスタンスの課金方法をサブスクリプションから従量課金に変更する」をご参照ください。
手順
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
スケールアウトするノードプールを見つけ、[アクション] 列の [スケーリング] をクリックします。
[インスタンス] パラメーターを設定し、プロンプトに従って構成を完了します。
ノードプールリストのノードプールのステータスが [拡張中] と表示されている場合、システムはノードプールをスケールアウトしています。ノードプールのステータスが [アクティブ] に変わると、ノードプールはスケールアウトされます。
重要クラスターのセキュリティグループが 100.64.0.0/10 へのアクセスを拒否している場合、新しいノードをクラスターに追加できません。
ノードプールリストのノードプールのステータスが [削除中] と表示されている場合、システムはノードプールをスケールインしています。ノードプールのステータスが [アクティブ] に変わると、ノードプールはスケールインされます。
関連情報
クラスターからノードを削除する方法の詳細については、「ノードプールからノードを削除する」をご参照ください。
デプロイメントセットを使用して ECS インスタンスを異なる物理サーバーに分散して高可用性を確保する、プリエンプティブルインスタンスベースのノードプールなど、ノードプールに関するベストプラクティスの詳細については、「ノードとノードプールのベストプラクティス」をご参照ください。