このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

仮想ノードを介したelasticコンテナインスタンスへのポッドのスケジュール

更新日時2025-03-03 09:06

Container Service for Kubernetes (ACK) クラスターを使用する場合、短時間で多数のポッドを起動する必要があります。 ポッドのElastic Compute Service (ECS) インスタンスを作成する場合、作成プロセスに時間がかかります。 ECSインスタンスの予約を選択した場合、ポッドの作成前と終了後にインスタンスはアイドル状態になり、リソースが無駄になります。 この問題に対処するには、仮想ノードとしてデプロイされているエラスティックコンテナインスタンスにポッドをスケジュールすることを推奨します。 これにより、ECSインスタンスを購入または管理する必要がなくなります。 このトピックでは、ACKマネージドクラスターまたはACK専用クラスターに仮想ノードとしてデプロイされているエラスティックコンテナインスタンスにポッドをスケジュールする方法について説明します。

ACKクラスターでのエラスティックコンテナインスタンスの実行方法

Elastic Container Instance

は、コンテナー化のためにAlibaba Cloudによって提供されるサーバーレスコンピューティングサービスです。 elasticコンテナインスタンスを使用すると、コンテナのO&Mフリーおよび分離されたランタイム環境を効率的に設定できます。 Elasticコンテナインスタンスを使用すると、Elastic Compute Service (ECS) インスタンスを購入または管理することなく、コンテナ化されたアプリケーションに集中できます。 これにより、インフラストラクチャのメンテナンスが不要になります。 オンデマンドでelasticコンテナインスタンスを作成できます。 リソースの使用量は1秒ごとに課金されます。

ほとんどの場合、ACKクラスタは、少なくとも1つのノードプールを有する。 ポッドを作成すると、ACKはポッドをノードプール内のECSインスタンスにスケジュールします。 このスケジューリングモードは、安定したトラフィック量を受信するアプリケーションに適しています。 ただし、ACKがECSインスタンスをスケールアウトできる場合でも、このスケジューリングモードではトラフィックスパイクを処理できません。 これは、ECSインスタンスの作成と起動に時間がかかるためです。 この場合、仮想ノードとしてデプロイされているエラスティックコンテナインスタンスにポッドをスケジュールすることを推奨します。 これにより、新しいノードを追加する必要がなくなり、リソースの無駄がなくなり、コンピューティングコストが削減されます。

image

シナリオ

エラスティックコンテナインスタンスを使用して、トラフィックの急増を処理し、コンピューティングコストを削減できます。 Elasticコンテナインスタンスは、次のシナリオに適しています。

  • オンライン教育やeコマースなど、トラフィックの変動に対処するために柔軟なスケーリングが必要なオンラインビジネス。 エラスティックコンテナインスタンスを使用して、トラフィックスパイクを効率的に処理できます。 さらに、elasticコンテナインスタンスは、リソースプールのメンテナンスを最適化できます。 これにより、コンピューティングコストを削減できます。

  • オンデマンドで実行されるコンピューティングタスク。 elasticコンテナインスタンスを使用して、このようなタスクを実行できます。 この方法では、タスクが実行されていないときにノードを保持する必要がなく、コンピューティングタスクによって実際に使用されるコンピューティングリソースに対してのみ課金されます。 次のタイプのコンピューティングタスクが含まれます。

    • データ処理タスクはSparkまたはPrestoを使用して実行されます。

    • JenkinsとGitLab Runnerを使用して構築された継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプライン。

    • AIコンピューティングシナリオとCronJobsのジョブ。

前提条件

手順1: ack-virtual-nodeをクラスターにデプロイする

ACK管理クラスターでは、ack-virtual-nodeは、ACK専用クラスターとは異なる方法でインストールおよび管理されます。

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

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

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

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

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

    クラスターのデフォルトのvSwitchとセキュリティグループは、ack-virtual-nodeによってデプロイされるエラスティックコンテナインスタンスに使用されます。 これらの設定を変更するには、「関連操作」をご参照ください。

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

  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

    [クラスターの詳細] ページに移動します。 [基本情報] タブをクリックして、クラスターがデプロイされているVPCのIDを表示します。

    ECI_VSWITCH

    はい

    vSwitch ID。

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

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

    説明

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

    ECI_SECURITY_GROUP

    はい

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

    [クラスターの詳細] ページに移動します。 [基本情報] タブをクリックして、クラスターで使用されているセキュリティグループのIDを表示します。

    ECI_ACCESS_KEY

    はい

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

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

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

    ECI_SECRET_KEY

    はい

    使用するRAMユーザーのAccessKey ID。

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

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

    KUBERNETES_APISERVER_HOST

    はい

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

    クラスターのKubernetes APIサーバーの内部エンドポイントのIPアドレスとポート。 [クラスターの詳細] ページに移動し、[基本情報] タブをクリックして、クラスターのKubernetes APIサーバーの内部エンドポイントを表示します。

    KUBERNETES_APISERVER_PORT

    はい

    クラスターのKubernetes 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

手順2: ポッドをelasticコンテナインスタンスにスケジュールする

ack-virtual-nodeがクラスターにデプロイされた後、クラスターに仮想ノードとしてデプロイされたエラスティックコンテナインスタンスにポッドをスケジュールできます。 次のいずれかの方法を使用して、ポッドをACK管理クラスターまたはACK専用クラスターのエラスティックコンテナインスタンスにスケジュールできます。

ACK Proクラスターを使用している場合、エラスティックコンテナインスタンスのみにポッドをスケジュールするようにクラスターを設定したり、ポッドスケジューリング用のECSインスタンスに優先順位を付けたり、ECSインスタンスのみにポッドをスケジュールするようにクラスターを設定したりできます。 詳細については、「Elastic Container Instanceベースのスケーリングの設定」をご参照ください。

ポッドラベルを追加してポッドをエラスティックコンテナインスタンスにスケジュールする
名前空間ラベルを追加してポッドをエラスティックコンテナインスタンスにスケジュールする

ポッドをエラスティックコンテナインスタンスにスケジュールするには、次の手順を実行してポッド設定にalibabacloud.com/eci=trueラベルを追加します。

  1. 次のコマンドを実行して、ポッド設定にalibabacloud.com/eci=trueラベルを追加します。

    kubectl run nginx --image nginx -l alibabacloud.com/eci=true
  2. 次のコマンドを実行して、クラスター内の仮想ノードとしてデプロイされているエラスティックコンテナインスタンスにポッドがスケジュールされているかどうかを確認します。

    kubectl get pod -o wide|grep virtual-kubelet

    想定される出力:

    nginx-7fc9f746b6-r4xgx     1/1     Running   0          34s   192.XX.XX.108   virtual-kubelet-cn-hangzhou-k        <none>           <none>

ポッドをエラスティックコンテナインスタンスにスケジュールするには、次の手順を実行して、ポッドをデプロイする名前空間にalibabacloud.com/eci=trueラベルを追加します。

  1. 次のコマンドを実行して、vkという名前空間を作成します。

    kubectl create ns vk
  2. 次のコマンドを実行して、alibabacloud.com/eci=trueラベルをvk名前空間に追加します。

    kubectl label namespace vk alibabacloud.com/eci=true
  3. 次のコマンドを実行してvk名前空間にポッドを作成し、ポッドを仮想ノードにスケジュールします。

    kubectl -n vk run nginx --image nginx
  4. 次のコマンドを実行して、クラスター内の仮想ノードとしてデプロイされているエラスティックコンテナインスタンスにポッドがスケジュールされているかどうかを確認します。

    kubectl -n vk get pod -o wide|grep virtual-kubelet

    想定される出力:

    nginx-6f489b847d-vgj4d      1/1     Running             0          1m   192.XX.XX.108   virtual-kubelet-cn-hangzhou-k        <none>           <none>

関連する操作

仮想ノードの高度な機能を使用するには、ack-virtual-nodeを更新するか、仮想ノードの設定を変更します。 仮想ノードを使用する必要がなくなった場合は、ack-virtual-nodeをアンインストールできます。

ack-仮想ノードの更新

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

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

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

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

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

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

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

  4. 手順1: ack-virtual-nodeをクラスターにデプロイするのパラメーターの説明に基づいて、必須パラメーターとオプションのパラメーターを変更します。 [OK] をクリックします。

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

ACKクラスター内の仮想ノードの設定の変更

詳細については、「eci-profileの設定」をご参照ください。

ACKクラスター内の仮想ノードの削除

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

    • ACKマネージドクラスター内のすべてのElastic Container Instanceベースのポッドを削除した後、[アドオン] ページでack-virtual-nodeをアンインストールします。

    • ACK専用クラスター内のすべてのElastic Container Instanceベースのポッドを削除した後、Helmページでack-virtual-nodeを削除します。

  2. kubectl delete node <node name> を実行して、不要な仮想ノードを削除します。

    説明

    ack-virtual-nodeをアンインストールしても、クラスター内の既存のelasticコンテナインスタンスは削除されません。

  • 目次 (1, M)
  • ACKクラスターでのエラスティックコンテナインスタンスの実行方法
  • シナリオ
  • 前提条件
  • 手順1: ack-virtual-nodeをクラスターにデプロイする
  • 手順2: ポッドをelasticコンテナインスタンスにスケジュールする
  • 関連する操作
  • ack-仮想ノードの更新
  • ACKクラスター内の仮想ノードの設定の変更
  • ACKクラスター内の仮想ノードの削除
  • 関連ドキュメント
フィードバック