【AWS】k8sって何?オーケストレーションツールとはどういうものか。

はじめに

近年、新たな技術として注目されているコンテナ。
サーバ運用のコストを下げ、Amazon Web Services(AWS)などのクラウド環境との相性が良いコンテンツとなりますが、とある問題が発生します。その問題を解決できる、Kubernetes(K8s)に代表されるオーケストレーションツールについて調べてみました。

オーケストレーションツールとは

そもそも、オーケストレーションツールというのはどのようなものなのでしょうか。
それには近年注目されている技術である「コンテナ」の概念を理解しておく必要があります。

コンテナとは

コンテナというと、「貨物列車やトラックなどが運ぶ、内部に物を貯められ運搬が可能な容器」をイメージされる方も多いのではないでしょうか。ITサービスにおけるコンテナもイメージとしては同様で、内部にアプリケーションを格納して使用する形となります。1台のホストコンピュータに展開されたOS上に、コンテナと呼ばれる仮想のユーザ空間を作成し、コンテナ上で複数のアプリケーションができる技術です。
従来のアプリケーション実行環境では、1台のホストコンピュータに展開されたOS上に複数のアプリケーションをインストールして使用しますが、リソースに無駄が出てしまい、コストが高くついてしまいます。仮想化は物理的なリソースの削減に繋がりますが、アプリケーションを実行させるのにゲストOSを導入した仮想マシンを用意する必要があります。コンテナはコンテナデーモンと呼ばれるシステムが導入されている環境であれば、 WindowsやMacといったOS、オンプレミス環境やAWSに代表されるクラウド環境などに関係無くアプリケーションを実行する事が可能です。
コンテナにはゲストOSが存在しないので、ホストOSのカーネルを共有する事でファイルサイズが小さく動作も軽快となります。これは、作成したアプリケーションが実行環境を丸ごと別のマシンへ持ち込む事ができ、マシンがオンプレミスかAWS等のクラウドかの是非やOSバージョンやライブラリの差異に影響されない開発運用が可能になる、という事になるのです。
コンテナのサービスは色々ありますが、有名なところではDockerが挙げられます。

コンテナの課題と解決策としてのオーケストレーションツール

そんなコンテナですが、実際に本番運用されていくと、運用管理の必要性が出てきます。
例えば、コンテナ化したアプリケーションを複数のサーバへの展開や稼働できているかの監視。コンテナの動作に異常が発生した際に別のコンテナを起動させる処理。アプリケーションの負荷状況に応じてのスケーリングの実施。列挙したらキリがありませんが、Dockerなどのツール単体のみでは運用に相応の労力が必要となっていきます。
AWS上にそのまま適用させても、従来のような方法の元で行うには限界があるので、多数のコンテナを運用管理する別の仕組みを利用する必要が出てきました。それが、オーケストレーションツールと呼ばれるものとなります。オーケストレーションツールには様々な種類がありますが、代表的なものKubernetes(略称:k8s)とが挙げられます。k8sは元々Googleが設計したオープンソースソフトウェアで、現在はCloud Native Computing Foundation(略称:CNCF)というLinux Foundationのプロジェクトにてメンテナンスを行っており、
様々なソフトウェアベンダーがディストリビューションが提供されていて、k8sなどのツールを導入する事で、コンテナ周りに関する一元管理や一元操作できるようになります。
ちなみに、AWSではAmazon Elastic Container Service for Kubernetes(Amazon EKS)という、AWSの環境でk8sを利用する為のサービスが提供されていますが、Amazon Elastic Container Service(Amazon ECS)という、AWS上のプライベートの格納領域を提供する独自のサービスも提供しています。
こちらはk8sなどで提供されているサービスと比べてコンテナの管理に特化したサービスとなり、AWS環境のみでの動作で問題無く、複数の多種多様なコンテナの管理を行わないのであれば、ECSの方がシンプルに扱えます。

まとめ

いかがだったでしょうか。先にも触れましたが、K8sに代表されるオーケストレーションツールは、AWSなどのクラウド環境とも相性も良く、次世代のサービスを運用管理していく上で重要な役割を担うものとなります。特に、K8sは数あるオーケストレーションツールの中でも事実上の業界標準と言える存在であり、「次世代のOS」という呼び声高いものとなっています。
クラウドを意識したサービスの構築を検討される際の参考の一端となりましたら幸いです。

コメントを残す

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