先日、KubernetesのPodとノードの違いについて質問を受けました。 言われてみると、Podとノードは、なんとなくややこしいですよね。

と言うことでKubernetesのPodとノードの違いについて簡単に残しておきます。

Podとは

Podとは、“アプリケーションを含む論理的なホスト”のことです。

“ホスト” ですので、独立したサーバと同様にIPアドレスが割り当てられ、Portを介し、通信することができます。

Podの中には、アプリケーションを内在するコンテナがある他、データを保存するボリュームも存在しています。コンテナなどは、同一Pod内に複数置くことができるので、必要な数を設置することができます。

Pod自体は、複数の仮想または物理サーバで構成したクラスターに存在しています。

KubernetesでDeploymentを作成すると、コンテナを持つPodが作成され、Podはスケジュールされているノードに関連づけられます。再起動や終了または障害が発生し強制的に関連付けを解除し移動させるケースを除き、同じノード上に残り続ける仕組みです。

因みに、KubernetesのHPでは、「Kubernetes内で作成・管理できるコンピューティングの最小のデプロイ可能なユニットです」と解説しています。

ノードとは

ノードは、Podを動作させることを目的としたクラスター構成のワーカーマシンです。

前述しましたがノードはクラスター上に構成されますので、ノードが動作することができれば、クラスターは仮想サーバでも物理サーバでもかまいません。

文章だけではわかりずらいので、イラストにしてみました。コンテナや仮想サーバ/物理サーバの数はイラストの都合上2台3台にしてありますが、実際にはいくつでもかまいません。

コンテナ毎にIP addressを割り当てますので、下のイラスト上では上部が外部となり、コンテナと直接通信をするイメージになります。