Kubernetesのアーキテクチャ
Kubernetesのアーキテクチャを見ていきましょう。

まず大枠として、KubernetesはControl PlaneとNodeからできています。Control Planeはいわゆる頭脳のパートで、Nodeは実際にアプリケーションのコンテナが起動するマシン(物理マシンでも仮想マシンでも良い)です。
次にPodを利用してコンテナが起動する流れを見ていきましょう。

①ユーザーはPodを作成するマニフェストを書き、kubectlを利用してkube-apiserverにリクエストを送ります。②リクエストを受け取ったkube-apiserverはetcdというデータベースに情報を保存します。③kube-schedulerがPodを新規作成する必要があることを検知し、メモリ・CPUなどさまざまな情報からどのNodeにPodを作成すべきか決定します。④kube-schedulerによってPodを作成するNodeが決まると、⑤kubeletが「自分のNodeにPodを作成すべきかどうか」を検知します。kubeletは自分のNodeにPodを作成すると決まったことがわかると、コンテナランタイムに指示してコンテナを起動します。
こうした流れでkubectlを利用してPod作成を指示したユーザーはKubernetesクラスタ上にコンテナを起動できます。
このようにAPIサーバ、データベース、そしてAPIサーバに問い合わせて稼働する各コンポーネントとしてみると一般的なWebサービスの構成と似ていて馴染みがでてきませんか?
Kubernetesのアーキテクチャで特徴的なのは、多くのコンポーネントがAPIサーバに問い合わせ、自分がすべき仕事にだけ専念しているところです。これはKubernetesが障害に強いと言われる理由の1つでもあります。例えばControl Planeが丸々障害でダウンしてしまったとします。各NodeのkubeletはAPIサーバにアクセスできなくなりますが、Nodeが正常に生きている限りkubeletは自分の管理するコンテナを監視し、稼働し続けます。
Kubernetesの動き、リソースやマニフェストについて理解が進んだでしょうか? 今回完全に理解できていなくても大丈夫です。次回は手を動かしてみる回になるので、手を動かしながらまたこの回に戻ってきてください。きっとより理解が深まることでしょう!
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
あおい(アオイ)
大手メーカーにてソフトウェアエンジニアエンジニアを経て2019年7月サイボウズ株式会社にSREとして入社。 現行インフラ基盤上のアプリケーションを新インフラ基盤(Kubernetes)に移行するプロジェクトが主な仕事です。著書は、「まんがではじめるKubernetes」など。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
