最終更新:

【仕組み解説】Kubernetesはどうやってコンテナを管理しているのか — オーケストレーションの裏側を図解


Kubernetes アーキテクチャ Control Plane(司令塔) API Server Scheduler etcd Controller Manager スケジューリング Node 1 kubelet kube-proxy ランタイム Pod A Pod B Pod C 自己修復 / スケールアウト Node 2 kubelet kube-proxy ランタイム Pod D Pod E Pod F 自己修復 / スケールアウト Service(外部からのアクセス窓口)
Kubernetesアーキテクチャのイメージ
ひよこ ひよこ
Kubernetesって最近よく聞くけど、そもそも何をしてくれるものなの?
ペンギン先生 ペンギン先生
簡単に言うと、たくさんのコンテナを自動で管理してくれる「指揮者」みたいな存在だよ。オーケストラの指揮者が各楽器奏者にいつ演奏するか指示するように、Kubernetesはどのサーバーでどのコンテナを動かすか決めてくれるんだ。
ひよこ ひよこ
指揮者かぁ!じゃあ指揮者がいないとどうなるの?
ペンギン先生 ペンギン先生
コンテナが数個なら手動でも管理できるけど、何百・何千個になると人間じゃ追いきれないよね。「このコンテナが落ちたから再起動して」「アクセスが増えたからコンテナ増やして」っていう作業を全部自動でやってくれるのがKubernetesだよ。
ひよこ ひよこ
なるほど!Kubernetesの中身ってどういう構造になっているの?
ペンギン先生 ペンギン先生
大きく分けると「Control Plane」と「Node」の2つがあるよ。Control Planeは司令塔で、API Server、Scheduler、etcd、Controller Managerという4つの主要コンポーネントで構成されているんだ。API Serverが全体の窓口、Schedulerがコンテナの配置先を決めて、etcdがクラスタの状態を記録して、Controller Managerが理想の状態を維持する役割だね。
ひよこ ひよこ
じゃあNodeっていうのは何なの?
ペンギン先生 ペンギン先生
Nodeは実際にコンテナが動くサーバーのことだよ。Node側の部品は3つで、kubeletとkube-proxyとコンテナランタイム(containerdなど)。kubeletはControl Planeからの指示を受けてPodを動かし続ける現場監督みたいな存在で、実際にコンテナを起動するのはコンテナランタイムの仕事だね。kube-proxyはServiceの通信を適切なPodに振り分ける交通整理係だよ。
ひよこ ひよこ
その3つは全部のNodeに必ず入っているの?
ペンギン先生 ペンギン先生
必須なのはkubeletとコンテナランタイムで、公式ドキュメントではkube-proxyは「optional」扱いなんだ。Ciliumのように、ネットワークプラグイン側がkube-proxyの役割を肩代わりする構成もあるからね。「Nodeには必ずkube-proxyがある」と覚えてしまうと、実際のクラスタを見たときに混乱するから気をつけて。
ひよこ ひよこ
PodとかDeploymentとかServiceっていう言葉も出てくるけど、これは何なの?
ペンギン先生 ペンギン先生
Podはコンテナを入れる最小単位の箱みたいなもので、1つ以上のコンテナをまとめて管理するよ。DeploymentはPodの数や更新方法を定義する設計図で、「このPodを3つ動かしてね」みたいな指示を書くんだ。Serviceは外部からのアクセスを適切なPodに振り分ける入り口の役割だよ。
ひよこ ひよこ
コンテナを動かすとき、どのNodeで動かすかはどうやって決まるの?
ペンギン先生 ペンギン先生
これがSchedulerの仕事だよ。新しいPodが作られると、SchedulerがすべてのNodeのCPUやメモリの空き状況をチェックして、最適なNodeを選んで配置するんだ。「このNodeはもうパンパンだから別のNodeに置こう」みたいな判断を自動でしてくれるよ。
ひよこ ひよこ
もしコンテナが突然落ちたらどうなるの?
ペンギン先生 ペンギン先生
ここがKubernetesのすごいところで、「自己修復」という機能があるんだ。仕組みとしては、Deploymentが裏でReplicaSetを作っていて、そのReplicaSetが「指定した数のPodが動いている状態」を保ち続ける役割を持つ。Podが落ちたらController Manager内のReplicaSetコントローラーが差分に気づいて新しいPodを作り直してくれるよ。人間が気づく前に復旧が終わっていることも多いんだ。
ひよこ ひよこ
アクセスが急に増えたときはどうするの?
ペンギン先生 ペンギン先生
スケールアウトという仕組みがあって、Horizontal Pod Autoscalerを設定しておくと、CPUの使用率などを見て自動的にPodの数を増減してくれるよ。たとえば「CPU使用率が80%を超えたらPodを増やす」みたいなルールを決められるんだ。
ひよこ ひよこ
Kubernetesの設定って複雑そうだけど、簡単にする方法はあるのかな?
ペンギン先生 ペンギン先生
Helmチャートというパッケージマネージャーがあるよ。アプリのインストールに必要なKubernetesの設定ファイルをまとめてテンプレート化したもので、複雑な設定もコマンド一発でデプロイできるようになるんだ。npmやaptみたいな感覚でKubernetesアプリを管理できるよ。
ひよこ ひよこ
便利だね!でもKubernetesって個人でも使うものなの?
ペンギン先生 ペンギン先生
正直、個人の小さなサービスにはオーバースペックなことが多いよ。Kubernetes自体の運用にもコストがかかるからね。ただ、AWS EKSやGoogle GKEみたいなマネージドサービスを使えばControl Planeの管理はクラウドに任せられるし、学習目的ならMinikubeやkindでローカルにクラスタを立てて試せるよ。本番で使うかどうかは、サービスの規模とチームのスキルに応じて判断するのが大事だね。

参考資料

確認日:2026年9月23日。コンポーネント構成や推奨設定はバージョンで変わるため、利用時は公式ドキュメントも確認してください。