コンテナ技術とKubernetes

コンテナの基盤技術となったKubernetes

仮想化技術よりもクラウド環境に適した開発技術として、コンテナ技術が注目を浴びています。コンテナ技術自体は、Docker以前にも存在していましたが、2013年にオープンソースのDockerが登場したことで、コンテナ技術は一気に普及しました。さらに、複数の環境にまたがるコンテナを管理するオーケストレーターとして、2018年からKubernetes(K8s)が爆発的な広がりを見せています。

Kubernetesは、コンテナ化されたアプリケーションの展開やスケーリング、管理を自動化する基盤技術です。Googleが元々10年以上使っていたBorgというコンテナ基盤のアーキテクチャをもとに開発されました。q、実績あるアーキテクチャに支えられた技術として、リリース当初から注目を集めていました。Kubernetes上で動くアプリケーションであれば、他のKubernetesでもかんたんに動作させられるという、ポータビリティが高い技術です。

Kubernetesはオープンソースの技術となっていて、Kubernetesのサービスを誰でも提供できます。そのため、Google・Amazon・Microsoft・IBMなど、多くのベンダーがマネージドサービスを展開していて、自分でKubernetes環境を1から構築せずに始めることもできます。

また、柔軟な拡張性があるのもKubernetesの特徴の1つです。魅力的な拡張機能がさまざまなコミュニティから生み出されているほか、ユーザー自身が機能を拡張することも可能です。

さらに、リソースを手動で操作しなくても、バージョンアップ・障害からの復旧・アプリケーションのスケールイン/アウトを自動化できるようなシステム構成となっています。CI/CDツールも提供されているので、開発・リリース・運用の一連の流れも自動化できます。

コンテナ技術とは

そもそも、コンテナ技術とはどんなものでしょうか。

コンテナ技術が普及する前の仮想化技術では、仮想的にハードウェアをエミュレートしたうえで、各マシン環境を設置していました。一方、コンテナ技術では、OSカーネルの上に下層的なプロセス空間をコンテナとして作成し、他のコンテナから隔離します。仮想ハードウェアやその上で動作するOSのオーバーヘッドがないので、コンテナのほうが高速に起動し、メモリやCPUの利用リソースも少なくて済みます。

また、コンテナでは、⁠オーバーレイファイルシステム」により、ディスク利用も効率化できます。オーバーレイファイルシステムとは、たとえば、Ubuntuイメージから作成されたコンテナAと、UbuntuにインストールしたWebサーバーから作成されたコンテナB・コンテナCがあるとき、AとB・CでUbuntuイメージが共有されるのはもちろん、BとCでWebサーバーイメージも共有する構成となるものです。これにより、ディスクやリソースの利用が効率化されます。

コマンドとリソースを中心に学ぶ

Kubernetes自体の構築などは、マネージドサービスや書籍の情報の充実により、トラブルに悩まされることは少なくなってきました。しかし、Kubernetesクラスターに対するkubectlコマンドやKubernetesの各リソースの使い方を覚えなければいけない、という課題が依然として残っています。

そこで、コマンド・リソースを学ぶのに最適なのが、本書Kubernetesポケットリファレンスです。本書は、Kubernetesで学習にしにくい、コマンドとリソースの使い方をリファレンス形式で徹底的に解説しています。また、入門編や応用編として、Kubernetes・Dockerの基本から、現場で使える応用テクニックまで網羅しました。Kubernetesの初心者から中上級者まで、Kubernetesを使うには持っておきたい1冊です。