このトピックでは、クラスタ内のアプリケーションサービス間の通信を有効にするために、アプリケーションにサービスを追加する方法について説明します。
背景情報
Enterprise Distributed Application Service(EDAS)のContainer Service for Kubernetes(ACK)クラスタにデプロイされたアプリケーションは、通常、同じDockerイメージを実行するポッドのグループで構成されます。これらのポッドは独立したIPアドレスを持っていますが、すぐに作成および削除されます。そのため、次々に削除される可能性のあるポッドにアクセスすることでアプリケーションにアクセスすることはできません。
サービスはフロントエンドをバックエンドから分離し、疎結合のマイクロサービスアーキテクチャを提供します。
EDASのKubernetesクラスタにアプリケーションをデプロイする場合、インターネット向けServer Load Balancer(SLB)インスタンスまたはイントラネット SLB インスタンスを使用してアプリケーションを公開できます。また、NodePortタイプのサービスをアプリケーションに追加して、ノードのIPアドレスとポートを使用して外部アクセスを有効にすることもできます。EDASの同じKubernetesクラスタに複数のアプリケーションサービスが作成されると、クラスタ内のアプリケーションサービスが相互にアクセスする必要がある場合があります。ただし、アプリケーションサービスは、インターネット向けまたはイントラネット向けのSLBインスタンスを使用して相互にアクセスすることはできません。この場合、ClusterIPタイプのサービスを追加して、クラスタ内の内部通信を有効にすることができます。
手順
にログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。 上部のナビゲーションバーで、リージョンを選択し、[マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択し、[クラスタタイプ] ドロップダウンリストから [kubernetesクラスタ] を選択し、目的のアプリケーションの [名前] をクリックします。
[アプリケーション概要] ページで、
サービス[アクセス構成] セクションの の横にある アイコンをクリックします。説明サービスを構成済みの場合、サービス名とIPアドレスが表示されます。
アイコンをクリックしてサービスのポートとプロトコルタイプを変更するか、
アイコンをクリックしてサービスを削除できます。[サービス] ダイアログボックスで、必要に応じてパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
サービス名
サービスの名前。サービス名は一意である必要があります。
名前は2~32文字で、小文字、数字、ハイフン(-)を含めることができます。名前は文字で始まり、文字または数字で終わる必要があります。
サービスタイプ
サービスのタイプ。有効な値:Cluster IP:ClusterIPサービス。このタイプのサービスは、クラスタの内部IPアドレスを使用してアプリケーションサービスを公開します。これはデフォルト値です。このオプションを選択すると、アプリケーションサービスはクラスタ内からのみアクセスできます。
Node Port:NodePortサービス。このタイプのサービスは、各ノードのIPアドレスと静的ポートを使用してアプリケーションサービスを公開します。 NodePortサービスは、システムによって自動的に作成されるClusterIPサービスにリクエストをルーティングするために使用できます。<NodeIP>:<NodePort>にリクエストを送信することで、クラスタ外からNodePortサービスにアクセスできます。
外部トラフィックポリシー
外部トラフィックを分散するためのポリシー。有効な値:Local:このポリシーは、サービスがデプロイされているノード上のポッドにのみトラフィックをルーティングします。
Cluster:このポリシーは、クラスタ内の他のノード上のポッドにトラフィックをルーティングできます。
サービスポート
サービスのフロントエンドポート。アプリケーションはこのポートを使用してアクセスされます。有効な値:1~65535。
コンテナポート
プロセスがリッスンするポート。このポートはアプリケーションによって定義されます。有効な値:1~65535。
ノードポート
ノードがサービスを公開するために使用するポート。このポートはアプリケーションによって定義されます。有効な値:30000~32767。
説明このパラメーターは、サービスタイプ パラメーターをNodePortに設定した場合にのみ使用できます。
プロトコル
サービスプロトコル。有効な値:TCP および UDP。デフォルト値:TCP。
説明アプリケーションにサービスを追加する際には、次の2つの項目に注意してください。
結果の確認
現在のアプリケーションにサービスを追加した後、ACKクラスタ内のポッドにログインし、ポッド内のサービスの固定IPアドレスを使用してアプリケーションにアクセスできます。
次の例では、Web アプリケーション サービスへのアクセスを確認します。他のタイプのサービスへのアクセスを確認する方法は異なります。
ACKコンソール にログインします。
左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、[アクション] 列で を選択します。
クラスタに関連付けられているCloud Shellがページの下部に自動的に開きます。クラスタに関連付けられているCloud Shellが開くと、システムはクラスタのkubeconfigファイルを自動的にロードします。その後、kubectlを使用してクラスタを管理できます。
次のコマンドを実行して、クラスタ内のすべてのポッドをクエリします。
kubectl get pods次のポッドが返されます。
NAME READY STATUS RESTARTS AGE store-pre-****-group-1-19-****7569b-f7*** 1/1 Running 0 28h store-prod-***duct-group-1-1-****7f894-zh*** 1/1 Running 0 28h次のコマンドを実行して、返されたポッドの1つにログインします。
kubectl exec -it store-prod-***duct-group-1-1-****7f894-zh*** /bin/sh次のコマンドを実行して、サービスの固定IPアドレスを使用してアプリケーションにアクセスします。
wget 10.XX.XX.XX:8081 # IPアドレスとポートは、サービスのIPアドレスとポートと一致している必要があります。次のようなログが返されます。
Connecting to 10.XX.XX.XX:8081 (10.XX.XX.XX:8081) index.html 100% |*******************************************************| 2203 0:00:00 ETA説明この例では、サンプル Web サービスへのアクセスを確認します。別のタイプのサービスへのアクセスを確認する場合、返されるログは異なり、サービスタイプによって異なります。