
Kubernetes入門:マスターノードとワーカーノード
Kubernetesは、複数の物理的または仮想的なマシンを使用してクラスタを形成し、そのクラスタを「マスターノード」と「ワーカーノード」で構成します。これらのノードはそれぞれ異なる役割を担い、Kubernetesクラスタの効率的な運用を支えています。マスターノードはクラスタ全体の制御を行い、ワーカーノードは実際のコンテナを動作させます。

マスターノードとワーカーノードの違い
項目 | マスターノード | ワーカーノード |
---|---|---|
役割 | クラスタ全体の管理と制御を行う | 実際にコンテナを実行する |
主なコンポーネント | APIサーバー、スケジューラー、コントローラーマネージャー、etcd | Kubelet、コンテナランタイム(Docker、containerdなど) |
コンテナの動作 | コンテナは実行されない | 実際にコンテナが実行される |
制御の役割 | ワーカーノードのコンテナを管理、スケジューリング、監視 | マスターノードの指示に従ってコンテナを動作させる |

マスターノードの詳細
マスターノードはKubernetesクラスタ全体の「指揮官」として機能します。具体的には、以下のようなコンポーネントで構成され、各ワーカーノードを管理します。
- APIサーバー
マスターノードとクラスタの他の部分(外部システムやユーザー、管理者など)とのやり取りを行います。APIリクエストはここで処理され、クラスタ全体の状態が管理されます。 - スケジューラー
クラスタ内で新しいコンテナ(Pod)をどのワーカーノードに配置するかを決定します。ワーカーノードのリソース(CPU、メモリなど)を考慮し、最適な場所にコンテナをデプロイします。 - コントローラーマネージャー
クラスタの状態を監視し、障害が発生した場合に自動で回復させる機能を持ちます。たとえば、コンテナがクラッシュした場合、新しいコンテナを立ち上げるのもこのコンポーネントの役割です。 - etcd
クラスタのすべての情報を保存する分散型キー・バリューストアです。Kubernetesクラスタの全体的な状態がここに保存され、マスターノードが必要なデータにアクセスします。
ワーカーノードの詳細
ワーカーノードは、実際にコンテナが動作する場所です。マスターノードからの指示を受け、以下のコンポーネントでコンテナを管理します。
- Kubelet
ワーカーノードで動作するエージェントで、マスターノードからの指示に基づいてコンテナを実行します。また、コンテナの状態を監視し、必要に応じてコンテナの再起動や終了を行います。 - コンテナランタイム
Dockerやcontainerdなどのコンテナランタイムがインストールされ、実際にコンテナを動作させます。コンテナの起動、停止、削除などの操作はすべてこのランタイムが担当します。 - Kube-proxy
ネットワークルールを管理し、クラスタ内の通信が円滑に行われるように設定します。コンテナ間の通信や外部とのアクセス制御を行うため、ネットワークの要です。
クラスターの自律的な動作
Kubernetesのクラスタは、マスターノードがワーカーノードを自律的に管理する仕組みで動作します。マスターノードが定義ファイル(マニフェストファイル)に基づいてワーカーノード上でコンテナを動作させます。管理者は主にマスターノードの初期設定を行い、その後はシステムが自動的にスケーリングや障害対応を行うため、手動での介入が少なくなります。
マスターノードとワーカーノードの協調動作
項目 | マスターノードの動作 | ワーカーノードの動作 |
---|---|---|
コンテナのデプロイ | スケジューラーがコンテナを配置するワーカーノードを決定 | Kubeletが指示を受け、指定されたコンテナを実行 |
障害時の対応 | コントローラーマネージャーが障害を検出し、コンテナを再作成 | 障害が発生したノードのコンテナが停止し、新たに別のノードでコンテナが再実行 |
リソース管理 | クラスタ全体のリソースを最適化し、適切に分配 | 各ノードのリソース(CPU、メモリなど)を利用してコンテナを実行 |
まとめ
Kubernetesのクラスタは、マスターノードとワーカーノードによって構成され、それぞれが異なる役割を果たしています。マスターノードは管理者のようにクラスタ全体の管理を行い、ワーカーノードは実際にコンテナを動作させるエンジンとして機能します。このように役割分担された構造により、システムは自律的に動作し、スケーラビリティや高可用性を実現しています。