第2回「コンテナ管理自動化」を現実のものにするKubernetes

Kubernetesとは

コンテナのメリットに潜む、運用管理の課題

仮想化技術の1つであるコンテナは、開発者にとってこれまでにないメリットをもたらしました。「軽量性」「俊敏性」そして「可搬性」をもったコンテナ技術は、同一カーネル上であれば、いかなる環境であっても簡単にアプリケーションを動かすことができます。仮想マシンと比較してオーバーヘッドが小さく、起動も早いため、開発に無駄が生じません。(※)

※コンテナ技術の基本的な概要は、以下のユニットも参考にしてください。
 第1回 コンテナ仮想化とは?モダンアプリケーションへの最適なアプローチ

一方で、運用管理の観点からみると、課題が多いのも事実です。急なトラフィック増加のためのコンテナオートスケールの仕組み、新バージョンのコンテナをどのホストに配置し、いつ動作させるか、旧バージョンのコンテナの削除、あるいは、どのようにして同一カーネル上のセキュリティインシデントを回避させるかなど、ざっと挙げただけでもさまざまな管理内容が考えられます。特に、エンタープライズなど、マルチホスト構成のクラスタ環境である場合、管理はより煩雑になります。コンテナ技術の恩恵を享受するには、一定の課題をクリアしなければなりません。

Kubernetesを利用することで、煩雑なコンテナ管理から解放される

そこで登場したのが、コンテナオーケストレーション(コンテナ管理の自動化)ツールである「Kubernetes」です。Kubernetesを利用すれば、コンテナのデファクトスタンダードであるDockerコンテナに関して、自分たちで仕組みを構築することなく、複数のDockerホストを管理したり、オートスケールしたりするなど、その運用を任せることができます。

Dockerにも「Docker Swarm」と呼ばれるコンテナ管理機能がありますが、大規模なコンテナ管理では、Kubernetesに一歩及びません。KubernetesはDockerコンテナを管理する専用ツールとして急速に成長し、注目を集めています。

Kubernetesが提供する主な機能

Kubernetesが提供する主な機能は、以下が挙げられます。

複数コンテナをデプロイ

ポリシー準拠で、複数のコンテナをデプロイします。

負荷分散

負荷分散機能により、ネットワークトラフィックを振り分けることができます。結果的に、デプロイの安定を実現します。

オートスケーリング

需要に基づいて、コンテナを自動でスケーリングしてくれます。

障害発生時にセルフヒーリングを実施

たとえば、サーバの不具合でコンテナが損壊した場合でも、Kubernetesが自動的に別のサーバでコンテナを復旧してくれます。

Kubernetesの基本的なアーキテクチャ

Kubernetesのアーキテクチャ

では、なぜKubernetesは複数のコンテナを管理できるのでしょうか?Kubernetesでは、上図のように、クラスタ環境が構築されていきます。Kubernetesアーキテクチャを構成する主な3つのコンポーネントを見ていきましょう。

Control plane(コントロールプレーン)

コンテナ管理を担う部分です。デプロイを実行したり、各コンテナの死活状況を監視したりします。

Node(ノード)

コンテナの実行環境です。

Pod(ポッド)

Kubernetesにおける最小単位です。Podは、1つあるいは複数のコンテナで構成されています。作成されたPodにはIPアドレスが割り当てられるため、Pod間で通信を行うことも可能です。

ただし、Pod間の通信は、同一のNode内でのみ有効です。Dockerの場合、LinuxのNATを経由することで通信を制御していましたが、限界があります。では、どのようにしてコンテナネットワークの課題は解決されるのか?
そのあたりを次のユニットで解説していきます。

【Kubernetes製品群「VMware Tanzu」の実力を探る】コラム一覧

富士ソフト VMware 仮想化ソリューションのご紹介

  
 

  山本 祥正
山本 祥正(Yoshimasa Yamamoto)
執行役員 ソリューション事業本部 副本部長

この記事を読んだ人はこちらの記事も読んでいます。
ECの売上アップ奥義
column
前回(ECでビジネスの可能性は広がるか)は、当社が手がけた独自ECサイト構築のうち、既存のパッケージでは実現できないような特徴のある事例を紹...