Container Service for Kubernetes (ACK) は、仮想ノードとElastic Container Instance (ECI) に基づくさまざまなサーバーレスコンテナを提供します。 たとえば、仮想ノードをACKクラスターにデプロイして、KubernetesとECIをシームレスに統合できます。 必要に応じてECIベースのポッドを作成して、クラスター容量の計画を回避できます。 このトピックでは、Service Mesh (ASM) を使用して、ACKクラスターの仮想ノードで実行されるECIベースのポッドでアプリケーションを管理する方法について説明します。
前提条件
バージョンが1.7.5.41以降のASMインスタンスが作成されます。 詳細については、「ASMインスタンスの作成」をご参照ください。
ack-virtual-nodeコンポーネントがデプロイされ、ACKクラスターで適切に実行されます。 詳細については、「手順1: ackクラスターにACK-virtual-nodeをデプロイする」をご参照ください。
ステップ1: 名前空間の自動サイドカープロキシ注入を有効にする
ASMコンソールで名前空間の自動サイドカー挿入を有効にすると、名前空間に作成された各ポッドに、Envoyプロキシがサイドカーとして自動的に挿入されます。 これらのEnvoyプロキシは、ASMインスタンスのデータプレーンを含む。
この例では、デフォルト名前空間とvk名前空間に対して、サイドカープロキシ自動注入が有効になっています。 詳細については、「グローバル名前空間の管理」をご参照ください。
ステップ2: アプリケーション用のECIベースのポッドの作成
エラスティックコンテナインスタンスで実行されるポッドにアプリケーションをデプロイした後、ASMはサイドカーを使用してデータプレーンでアプリケーションを管理できます。
方法1: ポッドラベルを使用してECIベースのポッドを作成
作成するアプリケーションポッドにalibabacloud.com/eci=true
ラベルを追加します。 このようにして、ポッドは、仮想ノードとして機能するエラスティックコンテナインスタンスにスケジュールされます。
次のコマンドを実行して、
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
次のコマンドを実行してNGINXアプリケーションをデプロイします。
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=true
期待される出力:
pod/nginx created
次のコマンドを実行して、仮想ノードで実行されているポッドに関する情報を表示します。
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
ラベルを追加します。 このようにして、ポッドは、仮想ノードとして機能するエラスティックコンテナインスタンスにスケジュールされます。
次のコマンドを実行して、
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
次のコマンドを実行して、vk名前空間にラベルを追加します。
kubectl label namespace vk alibabacloud.com/eci=true
期待される出力:
namespace/vk labeled
次のコマンドを実行してNGINXアプリケーションをデプロイします。
kubectl -n vk run nginx --image nginx
期待される出力:
pod/nginx created
次のコマンドを実行して、仮想ノードで実行されているポッドに関する情報を表示します。
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>