kubernetesの基本アーキテクチャを整理してみる

10月 11, 2023

どもども、注文していたm1Macがもう直ぐ届くのでウキウキの僕です。


そんなことはさておき、これまでちょくちょくkubernetesを学習しては記事にしてきましたが、職場でも利用されている都合上いよいよ本腰を入れて勉強しなければならないと思い体系的に学び直すことにしました。


今回はkubetnetsのアーキテクチャを今一度整理してこの記事にまとめておきたいと思います。

リソース

kubernetesのそもそものリソースとその関係性をアーキテクチャとしていますが、その仕組みは一見複雑です。


まずアーキテクチャを理解する上で押さえておかないといけないのは"コントロールプレーン"と"クラスター"の関係です。


コントロールプレーンはリソースの作成、削除、状態管理、監視などを行なっています。実際にpodなどのリソースが稼働するのがクラスター内のワーカノードです。


それではまずコントロールプレーンに存在するリソースを見てみましょう。

・kube-apiserver ・・・リソースの操作を行うkubectlコマンドが実行されるとそのREST操作をキャッチし処理します。
・etcd ・・・クラスターの状態をキーバリュー形式で保持してます。
・kube-scheduler ・・・podにノードが割り当てられているかを監視しています。割り当てられていない場合実行するノードをスケジューリングします。
・kube-controller-manager ・・・etcdとクラスターの現在の情報を比較し、ユーザが規定する理想状態に差異がある場合、理想状態になるようクラスター内リソースを操作します。
・cloud-controller-manager ・・・クラウド特有の制御ロジックが組み込まれたcontroller-managerです。オンプレミスやローカル環境でkubernetesを利用する場合は有効にする必要はありません。


次にワーカノードで稼働するリソースを確認してみます。

・kubelet ・・・ノードで実行されるエージェントでpodの起動状況などの情報をコントロールプレーン側に伝える役割があります。
・kube-proxy ・・・各ノードで稼働するネットワークプロキシです。ネットワークルールを整備し、クラスター内外のネットワークセッションからpodへの通信を実現します。

一通りリソースを確認できたところで、次にそれぞれの関係性を確認してみましょう。


アーキテクチャ

上記のリソース情報を踏まえkubernetesのアーキテクチャを図にすると以下のようになります。

コントロールプレーンとクラスターのやり取りはkube-apiserverとkubeletが行うということがわかりますね。また、コントロールプレーン内の各リソースはkube-apiserverを通してクラスターを操作していることも確認できます。

まとめ

今回はkubernetesの基本アーキテクチャについて整理して記事にしてみました。


今回は取り上げませんでしたが、他にもアドオン、DNSなど押さえておきたい要素はまだあります。


しかし、基本アーキテクチャさえ抑えておけばkubernetesの動作をざっくり把握して操作することができると思いますので常に意識しておくと良さそうですね!


最後まで読んでいただきありがとうございました!

↓本日のオススメ

kubernetes

Posted by CY