Kubernetes のアーキテクチャと、Pod がノードで実行されるようにスケジュールされるときの流れをまとめました。
アーキテクチャ
Kubernetes のアーキテクチャは、下の図のとおりです。
![](https://it-infra-ya.com/wp-content/uploads/2023/06/k8s_arch0.png)
Kubernetes クラスタは、コントロール・プレーンであるマスター・ノードと、Pod (コンテナが実行されるオブジェクト) が実行されるワーカー・ノードで構成されます。
Pod がスケジュールされるまでの流れ
Pod がワーカー・ノードで実行されるようにスケジュールされるまでの流れは、次に様になります。
(1) kubectl コマンドにより、マニフェストファイル (Pod の状態を定義したファイル) を適用すると、
その内容は、API server を介して etcd (Kubernetes クラスタの全情報が格納された、No SQLデータベース) に格納されます。
![](https://it-infra-ya.com/wp-content/uploads/2023/06/k8s_arch1.png)
(2) scheduler は、定期的に API server を介して etcd の内容を確認しています。
どのノードにもスケジュールされていない Pod がある場合、その Pod をどのノードで実行するかを決定し、etcd に書き込みます。
![](https://it-infra-ya.com/wp-content/uploads/2023/06/k8s_arch2.png)
(3) ワーカー・ノード上の kubelet は、定期的に API server を介して etcd の内容を参照し、自分自身のノード上で実行すべき Pod がないかを確認します。
![](https://it-infra-ya.com/wp-content/uploads/2023/06/k8s_arch3.png)
(4) 上記の(3)の結果、ワーカー・ノードで実行すべき Pod がある場合、kubelet は Pod を作成します。
![](https://it-infra-ya.com/wp-content/uploads/2023/06/k8s_arch4.png)
以上が、Kubernetes のアーキテクチャと、Pod がノードで実行されるようにスケジュールされるときの流れとなります。