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

Container Service for Kubernetes:ASMを使用して、ACKクラスターの仮想ノードで実行されるECIベースのポッドでアプリケーションを管理する

最終更新日:Dec 14, 2024

Container Service for Kubernetes (ACK) は、仮想ノードとElastic Container Instance (ECI) に基づくさまざまなサーバーレスコンテナを提供します。 たとえば、仮想ノードをACKクラスターにデプロイして、KubernetesとECIをシームレスに統合できます。 必要に応じてECIベースのポッドを作成して、クラスター容量の計画を回避できます。 このトピックでは、Service Mesh (ASM) を使用して、ACKクラスターの仮想ノードで実行されるECIベースのポッドでアプリケーションを管理する方法について説明します。

前提条件

ステップ1: 名前空間の自動サイドカープロキシ注入を有効にする

ASMコンソールで名前空間の自動サイドカー挿入を有効にすると、名前空間に作成された各ポッドに、Envoyプロキシがサイドカーとして自動的に挿入されます。 これらのEnvoyプロキシは、ASMインスタンスのデータプレーンを含む。

この例では、デフォルト名前空間とvk名前空間に対して、サイドカープロキシ自動注入が有効になっています。 詳細については、「グローバル名前空間の管理」をご参照ください。

ステップ2: アプリケーション用のECIベースのポッドの作成

説明

エラスティックコンテナインスタンスで実行されるポッドにアプリケーションをデプロイした後、ASMはサイドカーを使用してデータプレーンでアプリケーションを管理できます。

方法1: ポッドラベルを使用してECIベースのポッドを作成

作成するアプリケーションポッドにalibabacloud.com/eci=trueラベルを追加します。 このようにして、ポッドは、仮想ノードとして機能するエラスティックコンテナインスタンスにスケジュールされます。

  1. 次のコマンドを実行して、istio-injection=enabledラベルがデフォルトの名前空間に追加されているかどうかを確認します。

    kubectl get ns default --show-labels

    期待される出力:

    NAME      STATUS   AGE   LABELS
    default   Active   16d   istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asm
  2. 次のコマンドを実行してNGINXアプリケーションをデプロイします。

    kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=true

    期待される出力:

    pod/nginx created
  3. 次のコマンドを実行して、仮想ノードで実行されているポッドに関する情報を表示します。

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

    期待される出力:

    nginx                             2/2     Running            0              8m49s    192.168.XXX.XXX   virtual-kubelet-cn-beijing-i   <none>           <none>

方法2: 名前空間ラベルを使用してECIベースのポッドを作成する

作成するアプリケーションポッドが属する名前空間にalibabacloud.com/eci=trueラベルを追加します。 このようにして、ポッドは、仮想ノードとして機能するエラスティックコンテナインスタンスにスケジュールされます。

  1. 次のコマンドを実行して、istio-injection=enabledラベルがvk名前空間に追加されているかどうかを確認します。

    kubectl get ns vk --show-labels

    期待される出力:

    NAME   STATUS   AGE   LABELS
    vk     Active   96m   istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asm
  2. 次のコマンドを実行して、vk名前空間にラベルを追加します。

    kubectl label namespace vk alibabacloud.com/eci=true

    期待される出力:

    namespace/vk labeled
  3. 次のコマンドを実行してNGINXアプリケーションをデプロイします。

    kubectl -n vk run nginx --image nginx

    期待される出力:

    pod/nginx created
  4. 次のコマンドを実行して、仮想ノードで実行されているポッドに関する情報を表示します。

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

    期待される出力:

    nginx   2/2     Running   0          38s   192.168.XXX.XXX   virtual-kubelet-cn-beijing-i   <none>           <none>