Kubernetes では、Pod はそれぞれ独立した IP アドレスを持っていますが、頻繁に作成および削除されるため、サービスとして直接公開するのは実用的ではありません。この問題に対処するために、サービスを使用して、マイクロサービスアーキテクチャを実装するフロントエンドコンポーネントとバックエンドコンポーネントを分離できます。このトピックでは、コンソールを使用して ClusterIP サービスを作成する方法について説明します。
前提条件
ACS クラスタが作成されていること。詳細については、ACS クラスタの作成を参照してください。
背景情報
Kubernetes では、サービスとは、Pod の論理セットと、Pod へのアクセスに使用されるポリシーを定義する抽象化です。このパターンは、マイクロサービスとして知られています。ラベルセレクターは、サービスによってアクセスされる Pod のセットを決定するために使用されます。
Kubernetes クラスタ内の各 Pod には独自の IP アドレスがあります。ただし、Pod は頻繁に作成および削除されます。したがって、Pod を外部アクセスに直接公開することは、高可用性を確保するためのルールに準拠していません。サービスは、フロントエンドをバックエンドから分離します。フロントエンドクライアントは、どのバックエンド Pod が使用されているかを認識する必要はありません。これにより、疎結合のマイクロサービスアーキテクチャが提供されます。
詳細については、Kubernetes サービスを参照してください。
手順 1: デプロイメントの作成
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタの詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメントページの右上隅にあるYAML から作成をクリックします。
サンプルテンプレートを選択するかカスタマイズし、作成をクリックします。
Nginx デプロイメントのサンプルテンプレート。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 # 実際のイメージを <image_name:tags> の形式で置き換えてください。 ports: - containerPort: 80 # このポートはサービスで公開する必要があります。
デプロイメントページで、ターゲットアプリケーション名または右側の詳細をクリックします。その後、すべての Pod インスタンスのステータスが実行中になるまで監視して待機できます。
手順 2: サービスの作成
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけて、その名前をクリックします。左側のペインで、 を選択します。
サービスページで、右側の作成をクリックし、サービスの作成ダイアログボックスで関連情報を入力し、OK をクリックします。
構成項目
説明
名前
サービスの名前。
サービスタイプ
Cluster IP を選択します。このタイプはデフォルトのサービスタイプです。このタイプを選択すると、サービスはクラスタ内からのみアクセスできます。これは、クラスタの内部 IP を介してサービスを公開します。
説明必要に応じて、ヘッドレスサービスを有効にするかどうかを選択できます。有効にすると、ヘッドレスサービスを使用して他のサービス検出メカニズムと対話できます。これにより、Kubernetes から分離されます。
バックエンド
サービスをバインドするバックエンドアプリケーションを選択します。関連付けデプロイメントが実行されていない場合、関連するエンドポイントオブジェクトは作成されません。詳細については、セレクターのないサービスを参照してください。
ポートマッピング
サービスポート(サービス YAML ファイルの
port
に対応)とコンテナポート(サービス YAML ファイルのtargetPort
に対応)を追加します。コンテナポートは、バックエンド Pod で公開されているコンテナポートと一致する必要があります。アノテーション
サービスにアノテーションを追加します。
ラベル
サービスを識別するためにタグを追加します。
作成後、サービスページのアクション列で、ターゲットサービスを更新、YAML の編集、または削除できます。
説明サービス名をクリックして詳細なサービスページに入り、外部エンドポイントの後ろにあるリンクをクリックしてアプリケーションにアクセスできます。