ヘッドレス サービスとは何ですか? ヘッドレス サービスは何を行いますか? ヘッドレス サービスが実現する正当なユースケースは何ですか? 質問する

ヘッドレス サービスとは何ですか? ヘッドレス サービスは何を行いますか? ヘッドレス サービスが実現する正当なユースケースは何ですか? 質問する

Kubernetes に関する書籍の一部と、ドキュメントのヘッドレス サービスに関するページを読みました。しかし、Kubernetes が実際に何をするものなのか、なぜ使用するのかがまだよくわかりません。Kubernetes について、Kubernetes が何を実現するのか、なぜ使用するのかをよく理解している人はいますか?

ベストアンサー1

そうですね、理論が必要だと思います。インターネット上には多くの説明(公式ドキュメントを含む)がありますが、Marco Luksa が最もうまく説明していると思います。

サービスへの各接続は、ランダムに選択された 1 つのバックアップ ポッドに転送されます。しかし、クライアントがそれらのすべてのポッドに接続する必要がある場合はどうなるでしょうか。バックアップ ポッド自体が他のすべてのバックアップ ポッドに接続する必要がある場合はどうでしょうか。サービスを介して接続することは、明らかにこれを実現する方法ではありません。では、どのような方法があるのでしょうか。

クライアントがすべてのポッドに接続するには、各ポッドのIPを把握する必要があります。1つの選択肢は、クライアントがKubernetes APIサーバーを呼び出して、API呼び出しを通じてポッドのリストとそのIPアドレスを取得することですが、アプリをKubernetesに依存しないように常に努めるべきであるため、APIサーバーを使用することは理想的ではありません。

幸いなことに、Kubernetes では、クライアントが DNS ルックアップを通じてポッドの IP を検出できます。通常、サービスに対して DNS ルックアップを実行すると、DNS サーバーは単一の IP (サービスのクラスター IP) を返します。ただし、Kubernetes にサービスにクラスター IP が必要ないことを伝えると (サービス仕様で clusterIP フィールドを None に設定することでこれを行います)、DNS サーバーは単一のサービス IP ではなくポッドの IP を返します。DNS サーバーは単一の DNS A レコードを返す代わりに、その時点でサービスをバックアップしている個々のポッドの IP を指す複数の A レコードをサービスに対して返します。したがって、クライアントは単純な DNS A レコード ルックアップを実行して、サービスの一部であるすべてのポッドの IP を取得できます。クライアントはその情報を使用して、1 つ、複数、またはすべてのポッドに接続できます。

サービス仕様の clusterIP フィールドを None に設定すると、Kubernetes はサービスにクラスター IP を割り当てないため、クライアントはサービスをサポートするポッドに接続できず、サービスはヘッドレスになります。

Marco Luksa による「Kubernetes の実践」

おすすめ記事