Member-only story

Kubernetesのアーキテクチャの原則の解説

gavin.zhou
Jan 17, 2023

--

Kubernetesアーキテクチャ

K8Sとは何なのでしょうか?そして、なぜ始めるのが難しいのでしょうか?K8Sは、コンテナ技術に基づく分散クラスタ管理システムです。これは、Googleが数十年にわたってコンテナ技術の大規模な応用に取り組んできた実際の成果です。そのため、大規模なクラスタ管理をサポートするためには、多くのコンポーネントを搭載しなければならず、ディストリビューション自体も大変複雑にならざるをえません。

次に、K8Sには具体的にどのような機能があるのか、順を追って見ていきましょう。

まず、分散システムである以上、複数のノード(物理ホストや仮想マシン)が存在し、それらが集まって分散クラスタを構成し、その中にノードノードを統一的に管理するマスターノードが存在する必要があります。

この図を見てください。

質問1:マスターノードとワーカーノードはどのように通信するのですか?

まず、Masterノードが起動すると、Kube-apiserverプロセスが実行されます。このプロセスは、クラスタ管理のためのAPIインターフェースを提供し、クラスタのさまざまな機能モジュール間のデータのやり取りと通信の中心ハブとなり、クラスタのセキュリティメカニズムも利用可能です。

Nodeノード上では、K8Sのkubeletコンポーネントを用いて、Nodeノードの登録、終了、定期的なヘルスレポートなど、Masterに対するそのノードの稼働状況の報告、Masterからのコマンドの受信、対応するPodの生成などを行うkubeletプロセスが実行されることになります。

K8Sでは、Podは最も基本的なオペレーション単位です。Dockerコンテナとは少し異なり、Podは1つ以上のコンテナ(Dockerコンテナでも可)を含んでおり、これらの内部コンテナはネットワークリソースを共有、つまりlocalhost経由で互いにアクセスすることができます。

Podでどのようにネットワーク共有を実現するかですが、各Podが起動し、内部でpauseコンテナ(Googleのイメージ)が起動します。これはデフォルトのネットワークモードを使用し、他のコンテナのネットワークもそれに設定することで、ネットワーク共有の問題をクリアしています。

--

--

No responses yet