LoginSignup
1
1

More than 1 year has passed since last update.

Kubernetes のサービスとは (1) 大雑把な理解

Last updated at Posted at 2022-09-25

この記事について

Kubernetes の Service は、使い方は分かるけど実体がつかみずらく、漠然と使われることの多いリソースと思う。そこで Service の実体を整理してみる。

Service の大雑把な理解

まず Kubernetes から離れて、複数台の Web サーバーがあってそれを外部ネットワークに公開したいという場面を考える。
image.png

この時、大体以下の考慮が必要になる。

  • Web サーバーへのアクセスを負荷分散させたい
  • Web サーバーの数が増減することがある
  • Web サーバーのIPが変わることがある(サーバーが壊れた等)
  • Web サーバーで障害が起きたら、それにはリクエストを転送しないようにする
  • Web サーバーには、IP アドレスだけでなく名前でアクセスできるようにしたい

そこで以下のように前段にロードバランサーを置くことが一般的。
image.png

このロードバランサーは Web サーバーの増減や IP 変更の追跡、そして死活を把握する必要がある。
image.png

これを Kubernetes に置き換えると下図のような感じになる。まず Pod が接続されてるのが Pod Network(または Cluster Network)、Load Balancer の外側が Service Network。そして、図のLoad Balancer には DNS名と IP アドレス(ClusterIPと呼ばれる)が自動で割り当てられる。
image.png

そして、赤枠の部分を自動で構成してくれるのが Service というリソースになる。手動で構成しようとすると相当大変なので、これを一発で自動構成してくれる Service リソースはとてもありがたいと言える。
image.png

なお、上図の赤枠部分をもう少しちゃんと書くと、Service と Endpoints(または EndpoitSlice) というリソースで役割分担している。Endpoints(または EndpoitSlice) は、Service を作成するとそのペアとして自動で作成される。
image.png

何が分かりずらいの?

概念的にはそれほど難しくなさそうだが、では Service がなぜ漠然とするかというと、図に現れたネットワークやロードバランサー、IP 等の実体が何か、それを誰がどこでどう実現してるのか、という Kubernetes 上での実体が掴みづらいところと思う。
それらの実体や構成を行う登場人物を紐解いてみる。

Kubernetes のコンポーネントについて

実体を紐解くにあたって、どうしても Kubernetes を構成するコンポの知識が必要になる。記事の中にも説明を記載するが、例えば公式サイトにも Kubernetesのコンポーネント のページがあるので、必要に応じて参照いただければ。

続き

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1