サービス
Kubernetesサービスについて説明します。
サービスを使用して、相互に交換可能な1つ以上のポッドへのアクセスを公開します。 ローリング更新およびスケーラビリティのためにポッドをレプリケートできるため、アプリケーションにアクセスするクライアントは、正しいアプリケーションを実行しているポッドに転送する必要があります。 ポッドは、Kubernetes以外のアプリケーションへのアクセスも必要になる場合があります。 どちらの場合も、実際のバックエンドが変更された場合でも、これらのリソースへのアクセスを透過的にするサービスを定義できます。
一般に、サービスはポートとIPのマッピングによって構成されます。 ネットワーク・スペースでのサービスの動作は、サービス・タイプによって異なります。
デフォルトのサービス・タイプはClusterIP
です。これにより、クラスタの内部IPにサービスが公開され、クラスタ内からのみサービスにアクセスできます。 このサービス・タイプを使用して、クラスタ内から相互にアクセスする必要があるアプリケーションのサービスを公開します。
多くの場合、Kubernetesクラスタ外のクライアントは、クラスタ内のサービスにアクセスする必要があります。 これには、NodePort
サービス・タイプを使用します。 このサービス・タイプは、すべてのワーカー・ノードで実行されるKubeプロキシ・サービスを利用し、NodePort
サービスとともに自動的に作成されるClusterIP
にトラフィックを再ルーティングします。 このサービスは、NodePort
という静的ポートで各ノードIPに公開されます。 Kube ProxyはNodePort
宛てのトラフィックをクラスタにルーティングします。そのトラフィックは、クラスタ内で実行中のポッドによって処理されます。 つまり、クラスタ内でNodePort
サービスが実行されている場合は、ポッドが実行されている場所に関係なく、クラスタ内の任意のノードからアクセスできます。
これらのサービス・タイプに加えて、LoadBalancer
サービス・タイプでは、クラウド・プロバイダのロード・バランサを使用してサービスを外部に公開できます。 外部ロード・バランサは、Kubeプロキシからクラスタ内のポッドへのトラフィックを直接リダイレクトできます。 LoadBalancer
サービスがプロビジョニングされると、NodePort
サービスおよびClusterIP
サービスが自動的に作成されます。
重要:
異なるポッドにサービスを追加する場合は、サービス宣言ごとにネットワークが適切に構成されていることを確認してください。 NodePort
またはLoadBalancer
サービスによって公開される外部向けポートには、ノードで実行されているファイアウォールからもアクセスできる必要があります。
サービスの詳細は、アップストリームの「Kubernetesドキュメント」を参照してください。