僕は技術ができない

技術のできないスーツ園児ニアが考えていること

KubernetesマスターとKubernetesノードについてふわっと理解する

今回は Kubernetesクラスターを構成する Kubernetes マスター と Kubernetes ノードについてふわっと理解していこうと思います。

Kubernetes 上ではクラスタを「望ましい状態」に保つために様々なコントロールプレーンと呼ばれるプロセスが協調しながら動いています。

コントロールプレーンを理解する前に、まずは「コントロールプレーンがどこで動くのか」についてまとめたいと思います。

コントロールプレーンはどこで動くのか

Kubernetes クラスターは以下の2つで構成されています。

  • Kubernetes マスター:クラスターを管理するプロセスの集合
  • Kubernetes ノード(ワーカーとも言う):コンテナが実際にデプロイされるマシン

ざっくり言ってしまうと、マスター内のコントロールプレーンがクラスターの「望ましい状態」を管理し、ノード内のコントロールプレーンが「望ましい状態」にするため自律的に動くという役割分担になっています。

マスターやノードのホストは物理マシンでもよいですし、VMでもよいです。

Kubernetesマスターの冗長化

基本的には、Kubernetes マスターはクラスター内の1台のサーバーにホストされます。

f:id:contemporarycuz:20191113215130p:plain

もちろん、本番ではマスターが止まるとクラスターが機能しなくなるため、複数台用意して冗長化を図ります。

f:id:contemporarycuz:20191113215204p:plain

また、Kubernetes マスターはあくまでもクラスターを管理するプロセスの集合なので、「プロセスの一部のみを冗長化」したり、「同一のマシンにマスターとノードを同居させる」こともできます。

f:id:contemporarycuz:20191113220850p:plain
プロセスの一部のみを冗長化

f:id:contemporarycuz:20191113220929p:plain
同一のマシンにマスターとノードを同居

マスターの冗長化については以下の記事がわかりやすいです。

qiita.com

クラウドのマネージドKubernetesを利用した場合の冗長化

パブリッククラウドのマネージドサービスを利用する場合には「Kubernetes マスター」がクラウドベンダーに管理されているため、マスターの冗長化は考える必要はありません。以下にAzureの例を示しておきます。

docs.microsoft.com

f:id:contemporarycuz:20191113215645p:plain
Azure Kubernetes Service のアーキテクチャー