マイクロサービスモデルでは、Kubernetes クラスタに多数のアプリケーションが含まれている場合があります。各アプリケーションには複数のバージョンが存在する可能性があります。この場合、クラスタ内に多数の Pod が存在する可能性があります。アプリケーション Pod を識別するために、Enterprise Distributed Application Service (EDAS) コンソールで、名前と値の形式でラベルを設定できます。その後、ラベルでアプリケーション Pod を検索できるため、アプリケーション管理が簡素化されます。このトピックでは、アプリケーションの作成時またはデプロイ時にアプリケーション Pod のラベルを設定する方法について説明します。
手順
EDAS コンソールにログインします。
左側のナビゲーションペインで、 をクリックします。トップナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。[コンテナサービスまたはサーバーレス Kubernetes クラスタ] を [クラスタタイプ] ドロップダウンリストから選択します。次に、デプロイするアプリケーションを見つけて、アプリケーション名をクリックします。
[アプリケーションの概要] ページの右上隅で、 を選択します。
[デプロイモードの選択] ページで、デプロイモードを選択し、デプロイモードセクションの右上隅にある [デプロイの開始] をクリックします。
説明この例では、[すべてに一度にリリース] モードを使用しています。
[すべてに一度にリリース] ページで、デプロイパラメータ設定を変更し、[ラベル設定] をクリックして、名前と値のペアを設定します。[OK] をクリックします。
説明名前と値のペアの値として、アプリケーションの名前を指定する必要があります。
アプリケーションがデプロイされた後、次の kubectl コマンドを実行して、指定されたラベルで Pod を検索します。
kubectl get pod -l demo-app-name=sc-server-demo以下のようなコマンド出力が表示されます。
NAME READY STATUS RESTARTS AGE sc-server-demo-group-1-1-5795d5487c-**** 2/2 Running 0 2m58s
ラベルを使用して Pod アフィニティを設定する
Kubernetes クラスタにアプリケーションをデプロイする場合は、異なるコンポーネント間の依存関係を考慮する必要があります。たとえば、特定の Pod を同じトポロジードメインにスケジュールできますが、他の Pod を同じトポロジードメインにスケジュールすることはできません。この場合、ラベルを使用してカスタム Pod アフィニティまたは Pod アンチアフィニティを設定できます。次のセクションでは、ラベルを使用して Pod アフィニティを実装する方法について説明します。
前提条件
demo-app-name=sc-server-demo ラベルを追加するアプリケーションがデプロイされています。
手順
次の手順では、別のアプリケーションの Pod アフィニティを設定し、2 つのアプリケーションの Pod を同じノードにスケジュールする方法について説明します。
EDAS コンソールにログインします。
左側のナビゲーションペインで、 をクリックします。トップナビゲーションバーで、リージョンを選択します。ページの上部で、名前空間を選択します。[コンテナサービスまたはサーバーレス Kubernetes クラスタ] を [クラスタタイプ] ドロップダウンリストから選択します。次に、デプロイするアプリケーションを見つけて、アプリケーション名をクリックします。
[アプリケーションの概要] ページの右上隅で、 を選択します。
[デプロイモードの選択] ページで、デプロイモードを選択し、デプロイモードセクションの右上隅にある [デプロイの開始] をクリックします。
説明この例では、[すべてに一度にリリース] モードを使用しています。
[すべてに一度にリリース] ページで、アプリケーション環境とデプロイパッケージを変更し、[スケジューリングルール] をクリックします。
[モードの選択] フィールドで、[カスタム設定] を選択します。[pod アフィニティ] タブで、スケジューリングルールを作成し、次の設定を実行します。
kubernetes.io/hostnameトポロジキーdemo-app-nameアプリケーションタグキーIn演算子sc-server-demoアプリケーションタグ値
[ラベル設定] をクリックし、
demo-app-name=sc-client-demoの名前と値のペアを設定します。次に、[OK] をクリックします。アプリケーションがデプロイされた後、次の kubectl コマンドを実行して、2 つのアプリケーション Pod が存在するノードをクエリします。
kubectl get pod -l demo-app-name=sc-client-demo -o wide kubectl get pod -l demo-app-name=sc-server-demo -o wide以下のようなコマンド出力が表示されます。
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sc-コマンド出力は、2 つのアプリケーション ポッドが同じノードに存在することを示しています。
次の手順
アプリケーションをデプロイする際に、[pod Affinity] タブと [pod Anti-affinity] タブでスケジューリングルールを作成できます。詳細については、「スケジューリングルールの構成」をご参照ください。