Skip to content
Latchkey

Kubernetes の node とは?pod を実行するマシン

node とは、あなたの pod を実行する Kubernetes クラスタ内の worker マシン - 物理または仮想 - であり、kubelet と container runtime によって管理されます。

Kubernetes は多数のマシンを1つのクラスタにプールし、それらのマシンのそれぞれが node です。control plane は何を実行すべきかを決定し、node は実際にそれが実行される場所です。node のコンポーネントを理解すると、pod が YAML manifest から実行中のコンテナへとどう変わるかが明確になります。

node 上で動くもの

  • kubelet - pod を起動して監督するエージェント。
  • コンテナを実行する container runtime(containerd、CRI-O)。
  • kube-proxy - node 上で Service のネットワーキングを扱う。
  • あなたの実際の workload pod。

kubelet

kubelet は、自身の node に割り当てられた pod spec を受け取り、container runtime にコンテナの起動を依頼し、それらの健全性を継続的に control plane に報告します。node の現場の管理者です。

node へのスケジューリング

scheduler は、resource request、taint と toleration、affinity ルールを勘案して、新しい pod がどの node に着地するかを決定します。適合する node のない pod は、キャパシティが現れるまで Pending のままです。

node の健全性と autoscaling

node が故障すると、その pod は別の場所に再スケジュールされます。cluster autoscaler は、pod が配置できないときに node を追加し、コスト節約のためにアイドルな node を削除できます。

CI との対応

node がクラスタに対して持つ関係は、runner が CI に対して持つ関係と同じです。作業を行うマシンです。runner のフリートを管理すること - プロビジョニング、スケーリング、修復 - は node 管理を映しており、マネージド runner プラットフォームがそれを代わりに扱います。

重要なポイント

  • node は、kubelet と container runtime を介して pod を実行する worker マシンです。
  • scheduler は、リソースと制約に基づいて pod を node に配置します。
  • 故障した node は pod が再スケジュールされ、autoscaler は node を追加・削除します。

関連ガイド