ITインフラ管理効率化のOSS[Kubernetes]
今月の気になるオープンソース情報(2018年6月号)
OSS研究室 森 彰吾
今回はKubernetesを紹介します。
Kubernetesは、Dockerなどのコンテナを管理するためのソフトウェアです。もともとはGoogleが設計し、利用していた技術をOSSとして公開したものです。
Kubernetesの紹介の前に、Dockerとコンテナについて解説します。
Dockerは、WEBやDBなどのサービス環境を閉じ込めた箱(コンテナ)を、Dockerエンジン上で動作させるための環境です。Dockerコンテナを利用することで、次のようなメリットがあります。
- Dockerエンジンがあれば、どんな環境でも同じサービスを展開できる
- コンテナ(=システム)のバージョン管理ができる
- 仮想OSよりも省リソース
- 仮想OSよりも起動が早い
コンテナには様々なメリットがありますが、一方で問題もあります。
- 複数コンテナの同時起動や停止などの制御が難しい
- 複数のホストにまたがったコンテナ間の通信制御が難しい
- ホストに障害が発生した場合の冗長性確保が難しい
- 大量のコンテナを全て監視しないといけない
このようなDockerの特徴のため、Dockerコンテナが活躍できる場面は、限られていました。例えば、アプリケーション開発者の開発環境としてコンテナを活用したり、ソフトウェアの検証環境としてコンテナを活用したりする形式です。
このような問題を解決するのがKubernetesです。
Kubernetesは、複数ホストで複数のコンテナを動作させることを前提として、設計されています。そのため、コンテナ間のネットワーク制御や、コンテナの監視、異常時のセルフヒーリング機能など、上記の問題を解決する機能が揃っています。
さらに、複数コンテナに対してのアクセスのロードバランシングや、CephやNFSなどの横展開が可能なストレージへの対応、利用するCPU・メモリの制限や監視など、実際のシステム運用で必要な機能も充実しています。
このような機能により、Dockerコンテナが活躍できる領域が広がりました。具体的には、非常に一般的なWEB/DBサーバや、インターネットの基幹となるDNSやメールなどのシステムもコンテナ化することができます。
例えばKubernetesを使ってWEBサービスを行った場合、次のようなことが可能になります。
- WEBアクセスの負荷に合わせてコンテナを自動的に増やして処理させる
- コンテナやホストの故障が発生してもセルフヒーリングでWEBサービスが継続できる
- アップデート時には、検証用のコンテナを起動することで、アップデート検証が可能
このようにKubernetesを使うと、コンテナを使ってインターネットサービスで利用する環境を構築できるようになります。デージーネットでは、Kubernetesの利用例として自社OSSのコンテナ化と、Kubernetesの設定情報(マニフェスト)の公開を検討しています。
コンテナ技術自体が、比較的最近有名になったことから、まだ名前しか知らないという人も多いと思います。ただ、10年程前には目新しい技術だった仮想化技術が、現在では当たり前になりました。コンテナ技術も仮想化技術と同じか、もっと早いスピードで普及していく可能性があります。
今後のITインフラ管理をより便利に、より効率的にするためにも、一度DockerコンテナとKubernetesを利用してみましょう。