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

Container Service for Kubernetes:仮想ノードの概要

最終更新日:Apr 28, 2025

Container Service for Kubernetes (ACK) クラスタを使用する場合、短期間に多数のポッドを起動する必要がある場合があります。ポッド用に Elastic Compute Service (ECS) インスタンスを作成する場合、作成プロセスに時間がかかることがあります。 ECS インスタンスを予約しておく場合、ポッドの作成前と終了後にインスタンスがアイドル状態になり、リソースの無駄が発生します。仮想ノードを使用すると、ノードプールを予約または維持する必要はありません。仮想ノードとして機能する Elastic Container Instance にポッドを直接スケジュールして、弾力性を確保し、リソースコストを削減できます。

仮想ノードが必要な理由

仮想ノードとは

ノードは、ACK クラスタでワークロードを実行するためのコンピューティングリソースとストレージリソースを提供する基本単位です。ほとんどの場合、ACK クラスタには少なくとも 1 つの ECS ノードプールがあります。ポッドが作成されると、kubelet はノードプール内の ECS ノードにポッドをスケジュールします。このスケジューリングモードは、安定したトラフィック量を受信するアプリケーションに適しています。ただし、このスケジューリングモードは、ACK が ECS インスタンスをスケールアウトできる場合でも、トラフィックの急増に対応できません。これは、ECS インスタンスの作成と起動に時間がかかるためです。仮想ノードを使用すると、Elastic Container Instance にポッドを直接スケジュールできます。これにより、ノードの O&M が簡素化され、アイドル状態のノードが排除され、リソースコストが削減されます。

仮想ノードは、ack-virtual-node コンポーネントを使用してコンピューティングリソースをカプセル化します。このようにして、インフラストラクチャを気にすることなくワークロードをデプロイできます。 ack-virtual-node は、ポッドを Elastic Container Instance に自動的にスケジュールします。Elastic Container Instance はサーバーレスコンテナサービスです。各 Elastic Container Instance はポッドと同等です。Elastic Container Instance にアプリケーションをデプロイするには、コンテナをデプロイするためのコンテナイメージを提供し、コンテナによって消費されるリソースの料金を支払うだけで済みます。

メリット

仮想ノードには次のメリットがあります。

  • O&M 不要: インフラストラクチャリソースを管理および維持する必要はありません。さらに、仮想ノードはホストされているリソースです。仮想ノードに対して、システムの更新やパッチのインストールなどの定期的なノード O&M 操作を実行する必要はありません。

  • 超大容量: 事前に計画することなく、クラスタ内で 50,000 ポッドまでスケールアウトできます。

    重要

    ポッドが多数のサービスに関連付けられている場合は、クラスタ内のポッドを 20,000 未満に保つことをお勧めします。

  • 秒単位のスケーリング: トラフィックの急増に対応するために、短期間で数千のポッドを作成できます。

  • セキュリティの分離: Elastic Container Instance にポッドをデプロイできます。ポッドがデプロイされているインスタンスは、軽量の仮想サンドボックスを使用して互いに分離されています。

  • コスト削減: ポッドはオンデマンドで作成され、従量課金制で課金されます。サーバーレスアーキテクチャは、リソースの無駄を防ぎ、O&M コストを削減するのに役立ちます。

シナリオ

仮想ノードは、その特性とメリットに基づいて、次のシナリオに適しています。

  • オンラインサービス

    オンライン教育や e コマースなど、トラフィックの急増に頻繁に対応する必要があるオンラインサービスの場合、仮想ノードを使用すると、ピーク時のリソースのスケールアウトの失敗によるシステムの過負荷を防ぎ、オフピーク時のリソースの無駄を回避できます。

  • データ処理

    Spark タスクや Presto タスクなど、多数のオンライン同時実行タスクを処理するために仮想ノードを使用する場合、基盤となるリソースのコストを気にする必要はありません。ビッグデータサービスを処理するために、短期間で数千のポッドをデプロイできます。

  • AI ジョブ

    仮想ノードを使用する場合、モデルのトレーニングやモデルの推論ジョブなど、大量のコンピューティングリソースを必要とする長期 AI ジョブ用にリソースを予約する必要はありません。リソースはオンデマンドでデプロイでき、秒単位で課金されるため、コストを削減できます。さらに、予期しないジョブを処理するために、数秒以内にリソースをスケールアウトできます。

  • CI/CD テスト

    CI パッケージング、ストレステスト、シミュレーションテストなど、CI/CD のバッチテストタスクを処理するために、仮想ノードを使用していつでもコンテナインスタンスを作成およびリリースできます。リソースはオンデマンドでデプロイでき、秒単位で課金されます。これにより、低コストで大規模なリソースをプロビジョニングできます。

  • ジョブと CronJob

    ジョブと CronJob は、完了後に自動的に終了します。ジョブと CronJob によって作成されたポッドも削除されます。仮想ノードを使用する場合、ジョブまたは CronJob が完了すると、リソースの課金が自動的に停止し、コンピューティングリソースが解放され、予期しないコストが発生することを回避できます。

制限事項

仮想ノードを使用する前に、次の制限事項に注意してください。

  • DaemonSet はサポートされていません。DaemonSet はサイドカーコンテナで置き換えることができます。

  • ポッド マニフェストHostPath または HostNetwork を指定することはできません。

  • 権限のあるコンテナはサポートされていません。Security Context を使用して、ポッドに機能を追加できます。

    説明

    権限のあるコンテナ機能は内部プレビュー中です。この機能を使用するには、チケットを送信 してください。

  • NodePort サービスとセッションアフィニティ機能はサポートされていません。

  • 中国南方金融地域と Alibaba Gov Cloud 地域はサポートされていません。

課金

仮想ノード機能は無料です。Elastic Container Instance の課金ルールに基づいて、Elastic Container Instance にデプロイされたポッドに対して課金されます。詳細については、「Elastic Container Instance の課金の概要」をご参照ください。

説明

Elastic Container Instance ベースのポッドは、従量課金制で課金されます。Elastic Container Instance ベースのポッドの課金は、ポッドが Pending 状態になると開始し、ポッドが Succeeded または Failed 状態になると停止します。詳細については、「ポッドのライフサイクル」をご参照ください。

仮想ノードの使用方法

クイックスタート

仮想ノードとしてデプロイされた Elastic Container Instance にポッドをスケジュールする」を参照して、仮想ノードにポッドをスケジュールする方法をすぐに学習できます。

ack-virtual-node のデプロイ

仮想ノード機能を有効にするには、ack-virtual-node コンポーネントをインストールします。

ACK マネージドクラスター

ACK マネージドクラスターでは、ACK コンソールの [アドオン] ページから ack-virtual-node をデプロイする必要があります。デフォルトでは、ack-virtual-node はデプロイ後にクラスターによって管理されます。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [アドオン] ページの [コアコンポーネント] セクションで、[ACK 仮想ノード] を選択し、[インストール] をクリックします。次に、画面の指示に従ってインストールを完了します。

    クラスターのデフォルトの vSwitch とセキュリティグループは、ack-virtual-node によってデプロイされる Elastic Container Instance に使用されます。 vSwitch またはセキュリティグループを変更する場合は、「対応する eci-profile を構成する」をご参照ください。

ACK 専用クラスター

ACK 専用クラスターでは、ACK コンソールの [マーケットプレイス] ページから ack-virtual-node をデプロイする必要があります。ack-virtual-node のインストール後、ack-virtual-node-controller という名前のデプロイメントが kube-system 名前空間に作成されます。このデプロイメントは、クラスター内のワーカーノードで実行されます。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[マーケットプレイス] > [マーケットプレイス] を選択します。

  2. [マーケットプレイス] ページで、[アプリカタログ] タブをクリックします。[ack-virtual-node] を見つけてクリックします。[ack-virtual-node] ページで、[デプロイ] をクリックします。

  3. [デプロイ] パネルで、クラスターと名前空間を選択し、[次へ] をクリックします。

    [名前空間] は自動的に kube-system に設定されます。[リリース名] は自動的に ack-virtual-node に設定されます。

  4. [パラメーター] ステップで、最新の [チャートバージョン] を選択し、[パラメーター] セクションで仮想ノードパラメーターを設定して、[OK] をクリックします。

    パラメーター

    必須

    説明

    値の取得方法

    ALIYUN_CLUSTERID

    必須

    クラスターの ID。

    [クラスター情報] ページに移動します。[基本情報] タブをクリックして、クラスター ID を表示します。

    ALIYUN_RESOURCEGROUP_ID

    オプション

    リソースグループの ID。

    このパラメーターを指定しない場合、デフォルトのリソースグループが使用されます。リソースグループを指定するには、リソース管理コンソール にログインして、使用するリソースグループの ID を取得します。

    ECI_REGION

    必須

    リージョン ID。

    [クラスタ情報] ページに移動します。 [基本情報] タブをクリックします。 [基本情報] セクションで、クラスタがデプロイされている [リージョン] を表示できます。

    説明

    リージョン名と対応するリージョン ID の詳細については、「リージョンとゾーン」をご参照ください。

    ECI_VPC

    オプション

    VPC の ID です。

    [クラスタ情報] ページに移動します。 [基本情報] タブをクリックして、クラスタ ID を表示します。

    ECI_VSWITCH

    必須

    vSwitch の ID です。

    ポッドに IP アドレスを割り当てるために使用される vSwitch を指定できます。複数の ID は、vsw-xxx1, vsw-xxx2 の形式で指定できます。クラスター内のノードプールで使用されている vSwitch を指定することをお勧めします。

    [ノードプール] ページで、ノードプールの ID をクリックします。[概要] タブをクリックします。[ノード構成] セクションで、ノードプール内のノードで使用されている vSwitch の ID を表示できます。

    説明

    指定する vSwitch が Elastic Container Instance でサポートされているゾーンにデプロイされていることを確認してください。

    ECI_SECURITY_GROUP

    必須

    セキュリティグループの ID です。

    [クラスタ情報] ページに移動します。 [基本情報] タブをクリックして、セキュリティグループ ID を表示します。

    ECI_SECURITY_GROUP

    必須

    使用する Resource Access Management (RAM) ユーザーの AccessKey ID。

    詳細については、「AccessKey ペアを取得する」をご参照ください。

    RAM コンソールで、RAM ユーザーに [AliyunECIFullAccess] ポリシーをアタッチする必要があります。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

    ECI_SECRET_KEY

    必須

    使用する RAM ユーザーの AccessKey シークレット。

    詳細については、「AccessKey ペアを取得する」をご参照ください。

    RAM コンソールで、RAM ユーザーに [AliyunECIFullAccess] ポリシーをアタッチする必要があります。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

    KUBERNETES_APISERVER_HOST

    必須

    クラスターの API サーバー の IP アドレス。

    API サーバー がクラスター内でサービスを提供するために使用する IP アドレスとポート。[クラスター情報] ページに移動します。[基本情報] タブをクリックして、クラスターの API サーバーの内部エンドポイントを表示します。

    KUBERNETES_APISERVER_PORT

    必須

    API サーバー のポート。

  5. ack-virtual-node がデプロイされているかどうかを確認します。

    kubectl -n kube-system get deploy ack-virtual-node-controller

    予期される出力:

    NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
    ack-virtual-node-controller   1/1     1            1           2m31s

Elastic Container Instance にポッドをスケジュールする

ACK は、Elastic Container Instance と ECS インスタンスの両方を使用してポッドをデプロイするシナリオで要件を満たすことができるさまざまなスケジューリングソリューションを提供します。詳細については、「仮想ノードにポッドをスケジュールする」をご参照ください。

説明

デフォルトでは、Elastic Container Instance ベースのポッドは x86 CPU アーキテクチャと Linux オペレーティングシステムを使用します。ARM アーキテクチャまたは Windows オペレーティングシステムを使用する Elastic Container Instance ベースのポッドを作成する場合は、「ARM ベースの仮想ノードにワークロードをスケジュールする」または「(招待プレビュー) Windows 仮想ノードにワークロードをスケジュールする」をご参照ください。

Elastic Container Instance ベースのポッドを構成する

ポッドアノテーションを追加して、Elastic Container Instance の機能を使用できます。たとえば、Elastic Container Instance の仕様の指定、ポッド作成を高速化するためのイメージキャッシュの有効化、Elastic Container Instance ベースのポッドへの IPv6 アドレスの割り当て、一時ストレージの拡張などです。詳細については、「ポッドアノテーション」をご参照ください。

説明

eci-profile の Elastic Container Instance Effect 機能を使用して、Elastic Container Instance ベースの Pod にアノテーションを動的にバッチ追加できます。

仮想ノードの管理

ack-virtual-node のアップグレード

仮想ノードの高度な機能を使用するには、ack-virtual-node をアップグレードします。

重要

アップグレードには約 1 分かかります。アップグレード中は、新しいポッドを作成できません。既存のポッドは影響を受けません。

ACK マネージドクラスター

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [コアコンポーネント] セクションの [アドオン] ページで、[ACK Virtual Node] を選択し、[アップグレード] をクリックします。次に、画面の指示に従ってアップグレードを完了します。

ACK 専用クラスター

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  3. Helm ページで、[ack-virtual-node] を見つけ、[アクション] 列の [更新] をクリックします。[リリースの更新] パネルで、[バージョン] ドロップダウンリストから最新バージョンを選択します。

  4. ビジネス要件に基づいて YAML テンプレートのパラメーターを更新し、[OK] をクリックします。

    さらに、virtualNode.image.tag フィールドを変更して、仮想ノードのイメージバージョンをアップグレードすることもできます。

仮想ノードの構成の変更

eci-profile は、Elastic Container Instance ベースのポッドで使用される VPC と vSwitch を指定し、ポッドが ARM アーキテクチャを使用するかどうかを指定します。 eci-profile の data セクションのパラメーターを更新できます。

仮想ノードの削除

ack-virtual-node をアンインストールすると、仮想ノードと Elastic Container Instance ベースのポッドは自動的に削除されます。

  1. Elastic Container Instance ベースのポッドが削除された後、ビジネスに影響がないことを確認してください。

  2. ack-virtual-node をアンインストールします。

    • ACK マネージドクラスター: ACK コンソールの [アドオン] ページで ack-virtual-node をアンインストールします。

    • ACK 専用クラスター: ACK コンソールの [Helm] ページで ack-virtual-node をアンインストールします。

よくある質問