Container Service for Kubernetes (ACK) クラスターを使用する場合、短時間で多数のポッドを起動する必要があります。 ポッドのECSインスタンスを作成する場合、作成プロセスに時間がかかることがあります。 ECSインスタンスの予約を選択した場合、ポッドの作成前と終了後にインスタンスはアイドル状態になり、リソースが無駄になります。 仮想ノードを使用することで、ノードプールを予約または維持する必要がなくなります。 仮想ノードとして機能するエラスティックコンテナインスタンスにポッドを直接スケジュールして、弾力性を確保し、リソースコストを削減できます。
なぜ仮想ノードが必要なのですか?
仮想ノードとは何ですか?
ノードは、ACKクラスターでワークロードを実行するためのコンピューティングリソースとストレージリソースを提供する基本単位です。 ほとんどの場合、ACKクラスターには少なくとも1つのECS (Elastic Compute Service) ノードプールがあります。 ポッドが作成されると、kubeletはポッドをノードプール内のECSノードにスケジュールします。 このスケジューリングモードは、安定したトラフィック量を受信するアプリケーションに適しています。 ただし、ACKがECSインスタンスをスケールアウトできる場合でも、このスケジューリングモードではトラフィックスパイクを処理できません。 これは、ECSインスタンスの作成と起動に時間がかかるためです。 仮想ノードの助けを借りて、ポッドを
elasticコンテナーインスタンス。 これにより、ノードのO&Mが簡単になり、アイドルノードがなくなり、リソースコストが削減されます。
仮想ノードは、ack-virtual-nodeコンポーネントを使用して計算リソースをカプセル化します。 これにより、インフラストラクチャについて心配することなくワークロードをデプロイできます。 ack-virtual-nodeは、ポッドをエラスティックコンテナインスタンスに自動的にスケジュールします。 Elastic Container Instanceは、サーバーレスコンテナサービスです。 各弾性コンテナインスタンスは、ポッドに相当します。 エラスティックコンテナインスタンスにアプリケーションをデプロイするには、コンテナをデプロイするためのDockerイメージを提供し、コンテナによって消費されたリソースの料金を支払うだけです。
メリット
仮想ノードは、以下の利点を提供する。
O&Mフリー: インフラストラクチャリソースを管理および保守する必要はありません。 加えて、仮想ノードはホストされるリソースである。 システムの更新やパッチのインストールなど、仮想ノードに対して通常のノードO&M操作を実行する必要はありません。
超大容量: 事前に計画を立てなくても、クラスター内の50,000のポッドにスケールアウトできます。
重要ポッドが多数のサービスに関連付けられている場合は、クラスター内に20,000未満のポッドを保持することをお勧めします。
第2レベルのスケーリング: トラフィックの急増を処理するために、短時間で数千のポッドを作成できます。
セキュリティの分離: elasticコンテナインスタンスにポッドをデプロイできます。 ポッドがデプロイされているインスタンスは、軽量仮想サンドボックスを使用して互いに分離されます。
コスト削減: ポッドはオンデマンドで作成され、従量課金制で請求されます。 サーバーレスアーキテクチャは、リソースの無駄を防ぎ、O&Mコストを削減するのに役立ちます。
シナリオ
仮想ノードは、その特性と利点に基づいて、次のシナリオに適しています。
オンラインビジネス
オンライン教育やeコマースなど、トラフィックの急増を頻繁に処理する必要があるオンラインビジネスでは、仮想ノードを使用すると、ピーク時にリソースをスケールアウトできないことによるシステムの過負荷を防ぎ、ピーク時以外にリソースを浪費することを回避できます。
情報処理
仮想ノードを使用して、SparkタスクやPrestoタスクなどの多数のオンライン同時実行タスクを処理する場合、基盤となるリソースのコストを心配する必要がなくなります。 数千のポッドを短期間でデプロイして、ビッグデータビジネスを処理できます。
AIジョブ
仮想ノードを使用する場合、モデルトレーニングやモデル推論ジョブなど、大量のコンピューティングリソースを必要とする長期AIジョブのリソースを予約する必要はありません。 リソースはオンデマンドでデプロイし、コストを削減するために1秒単位で請求できます。 さらに、リソースを数秒以内にスケールアウトして、予期しないジョブを処理できます。
CI/CDテスト
仮想ノードを使用して、CIパッケージ、ストレステスト、シミュレーションテストなどのCI/CDのバッチテストタスクを処理するために、コンテナインスタンスをいつでも作成およびリリースできます。 リソースはオンデマンドでデプロイでき、1秒ごとに課金されます。 これにより、大量のリソースを低コストでプロビジョニングできます。
仕事とCronJobs
ジョブとCronJobsは、完了後に自動的に終了します。 JobsとCronJobsによって作成されたポッドも削除されます。 仮想ノードを使用する場合、ジョブまたはCronJobが完了した後、リソースの課金が自動的に停止し、予期しないコストが発生しないようにコンピューティングリソースがリリースされます。
制限事項
仮想ノードを使用する前に、次の制限事項に注意してください。
ACKサーバーレスクラスターはDaemonSetsをサポートしていません。 DaemonSetsをサイドカーコンテナに置き換えることができます。
ポッド
マニフェスト
でHostPath
またはHostNetwork
を指定することはできません。ACKサーバーレスクラスタは、特権コンテナをサポートしません。 セキュリティコンテキストを使用して、ポッドに機能を追加できます。
説明特権コンテナー機能は内部プレビュー中です。 この機能を使用するには、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
ACKサーバーレスクラスターは、NodePortサービスまたはセッションアフィニティ機能をサポートしていません。
ACKサーバーレスクラスターは、China South FinanceまたはAlibaba Gov Cloudリージョンをサポートしていません。
課金
仮想ノード機能は無料です。 仮想ノードを使用すると、ACKクラスター管理料金が課金されます。 さらに、Elastic Container Instance、Virtual Private Cloud (VPC) 、Server Load Balancer (SLB) など、仮想ノードによって使用されるAlibaba Cloudサービスも課金されます。 エラスティックコンテナインスタンスでポッドを実行するための料金の詳細については、「課金の概要」をご参照ください。
クイックスタート
ポッドを仮想ノードにスケジュールする方法については、[ポッドを仮想ノードとしてデプロイされたエラスティックコンテナインスタンスにスケジュールする] を参照してください。
ack-virtual-nodeコンポーネントをインストールして、仮想ノード機能を有効にします。
ポッドまたは名前空間にラベルを追加して、仮想ノードとして機能するエラスティックコンテナインスタンスにポッドをスケジュールします。
関連ドキュメント
Elastic Containerインスタンスベースのポッドの設定
ECIプロファイル (eci-profileという名前のConfigMap) を作成して、Elastic Container Instanceベースのポッド (ポッドのセキュリティグループやゾーンなど) をバッチ設定します。 設定が更新されると、新しく作成されたElastic Container Instanceベースのポッドは、再起動することなくすぐに有効になります。 既存のElastic Container Instanceベースのポッドは、ロール更新後に有効になります。 詳細については、「eci-profileの設定」をご参照ください。
ポッド注釈を追加して、Elastic Container Instance機能を使用することができます。たとえば、elastic container instanceタイプの指定、イメージキャッシュによるポッド作成の高速化、IPv6アドレスのElastic Container Instanceベースのポッドへの割り当て、エフェメラルストレージの拡張などです。 詳細については、「ECIポッド注釈」をご参照ください。
ノードコロケーションシナリオでのポッドスケジューリングポリシーの設定
ACKは、複数のスケジューリングポリシーを提供する。 アプリケーションのポッドを仮想ノードにのみスケジュールできます。 ポッドを従量課金またはサブスクリプションのECSノードにスケジュールしたり、ECSノードが在庫切れのときにポッドを仮想ノードにスケジュールしたり、逆の順序でポッドをスケールしたりすることもできます。 適切なスケジューリングポリシーを選択するには、「仮想ノードベースのスケジューリングソリューションの概要と比較」をご参照ください。
指定したOSまたはアーキテクチャを使用するノードにポッドをスケジュールする
指定されたアーキテクチャを使用するノードにポッドをスケジュールする: デフォルトでは、ACKはすべてのポッドをx86-basedのノードにスケジュールします。 x86ノードが不十分な場合、ポッドは保留になります。 ポッドをARMベースの仮想ノードにスケジュールするには、「ワークロードをARMベースの仮想ノードにスケジュールする」をご参照ください。
指定したOSを使用するノードにポッドをスケジュールする: ポッドをWindowsノードにスケジュールするには、Windows仮想ノードをクラスターに追加してから、ポッドを仮想ノードにスケジュールします。 詳細については、「 (招待プレビュー中) ポッドをWindows仮想ノードで実行するようにスケジュールする」をご参照ください。
よくある質問
仮想ノードを使用する際にご質問がある場合は、「仮想ノードに関するFAQ」をご参照ください。