Kubernetesは何を解決するのか?




コンテナを使ったインフラ構築は最近では当たり前になりつつあります。

 

ECSなどDockerコンテナを使ったアプリケーションサーバの構築から今ではGKE、EKS、AKSといったマネージドなKubernetesを簡単に扱えるようになってきています。

 

ではなぜここまでコンテナやKubernetesがトレンドとなり、今の主流になってきたのでしょうか?

 

今回はこういった内容について深掘りしたいと思います。

 

コンテナとインスタンス(仮想サーバ)の違い

コンテナと仮想サーバの仕組み

コンテナをイメージ化したものを起動するのと、インスタンス(サーバを仮想化したもの)を起動するのでは明らかに前者の方がオーバーヘッドが少なく高速に起動します。

 

その理由はコンテナは1つのOSの上で複数個のコンテナ(アプリケーション)を動かすことができますが、インスタンスの場合はインスタンスごとにOSが必要になるためです。

 

これが起動時のオーバーヘッドとなりコンテナの方が起動が早くなる理由です。これらのコンテナを管理するソフトウェアのことをDockerといいます。

>>参考:【図解】コレ1枚でわかるサーバー仮想化とコンテナの違い

 

コンテナはDockerfileでどこでも同じ環境を瞬時に作れる

コンテナにはあらかじめ必要なものを含んだイメージファイルをDockerfileから作成します。このイメージはDockerのある環境であればどこでも全く同じものを起動させることができます。

 

このDockerfileは軽量で、管理が簡単なためデベロッパーの間で簡単に共有することができます。

 

仮想サーバにも同様の機能はありますが、実行環境が変わってしまうとハードウェアやOSにより違いで出てしまいます。

 

Kubernetesが解決するもの

Kubernetesはコンテナを扱いやすくしたオーケストレーションツール(コンテナを指揮するツール)になります。

 

クラスタ内のコンテナ間通信でNATを必要としない

複数サーバの上で起動するコンテナでアプリケーションを構築する場合、別サーバのOSに対する通信にはNATが必要になります。Kubernetesはこの手間を軽減してくれます。

 

NATを必要としない技術にはFlannelやCalicoといった技術が使われているみたいですが、ここら辺はまだ理解できていないです。

 

マイクロサービス化しやすい

Kubernetesクラスタ内に複数のコンテナを作りやすくなり、それぞの通信が簡単に行えることでマイクロサービス化しやすくなります。

 

これは機能別にコンテナをわけ、複数のコンテナのグループが相互に通信し合ってバックエンドを構築するものです。このメリットは一つのコンテナグループで全ての機能を提供している場合、どこかに問題があれば全てのコンテナが使えなくなことを防ぎます。

 

機能別にコンテナを分けておくことで、Aという機能は今はダウンしているが、Bと言う機能が使えるというシステムを構築することができます。

 

自己修復など他にもたくさんいいことがある

Kubernetesには自己修復機能など多くの便利機能があり、確実に今後のバックエンドの主流になります。

 

現時点でDockerやコンテナを触ったことがない人はすぐにでも触ってみてい学習を始めることをお勧めします!

 

Kubernetesは自分もわからないことだらけなので今後も学習を頑張りたいと思います。本日は以上です。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です