Member-only story

つまりKubernetesの役割って?Part4

gavin.zhou
9 min readDec 23, 2021

--

今回は Kubernetesの役割についての記事です。長い記事なので、5回に分けて投稿いたします。今回は第4回目です。

Other Kubernetes objects

ここまでで、Kubernetesの基礎知識として、2つの共通オブジェクトを取り上げました。PodsとDeploymentsです。しかし、Kubernetesを扱う際には、さらに多くのオブジェクトを扱うことになります。ここでは網羅的なリストは作成しませんが、Kubernetesの一般的なオブジェクトをいくつか見てみましょう。

Services

自分のPodの中で動作するコンテナのコレクションができました。さて、どうしましょう?

一般的には、何らかの方法でPodにアクセスしたいと思いますが、そのためにはPodのアドレスを特定できる必要があります。

ポッドのIPアドレスを調べて、それを使ってポッドにアクセスすることができます。しかし、それにはいくつかの問題があります。まず、Podは出入りが激しいので、IPアドレスも変わってしまいます。ポッドのIPアドレスが変わるたびに手動で追跡するのは不可能です。その代わりに、何らかの形でサービスを発見する必要があります。第二に、Podのデプロイメントを活用するためには、Pod間でトラフィックのロードバランスを取る必要があります。

サービスは、これらの活動を代行します。サービスは、ポッドの論理的な集合体と、それらにアクセスするためのポリシーを定義する軽量のk8sオブジェクトです。言い換えれば、サービスはPodやPodのグループに安定したアドレッシングが利用できるということです。サービスには主に2つのタイプがあります。

  • ClusterIP Servicesは、Kubernetesクラスタ内のアクセスを提供します。つまり、同じクラスター内の異なるPodがお互いに見つけて通信できるようにするものです。
  • NodePort Serviceは、クラスタの外部からのアクセスを提供します。例えば、NodePortサービスを使用すると、ローカルのWebブラウザを使って、クラスタ内に配備されたWebアプリケーションにアクセスすることができます。

他の k8s オブジェクトと同様に、YAML ファイル内で Service を定義し、kubectl を使って適用します。さらに、サービスは、アドレスを提供するPodを特定するために、上で見た「セレクタ」パターンに依存します。小さなYAMLファイルのサンプルは次のようなものです。

apiVersion: v1kind: Servicemetadata:name: my-app-external-servicespec:type: NodePort

--

--

No responses yet