VMware系エンジニアがコンテナについて学習してみた – 入門者のための学習リソース編

Containers

VMware系エンジニアがコンテナについて学習してみた – 入門者のための学習リソース編

vSphere 7の登場により、一層市場の中ではコンテナ環境への注目が増していると言えます。とはいえ、コンテナという技術は以前から存在しており、これを用いた成功事例も年々増している。そんな市場のニーズを受けて、私も自分自身がコンテナ環境に対しての理解を深めるために今回のまとめを作成しました。

またテクニカルインストラクターという立ち位置上、自分だけではなく今後講義またはイベントなどで関わるであろう全ての方にもより効率よくコンテナ環境をゼロから学べるように本記事を残します。

なぜコンテナ環境が必要なのか?

これは”なぜ仮想マシンが必要なのか?”という問いかけの答えと似ている所があります。
仮想マシンの利点は次の通りです。

  • 可搬性 vMotionのような便利な方法でワークロードの移行が可能
  • 疎結合 ハードウェアの世代問わず幅広い種類のミドルウェア、アプリケーション実行環境が得られる
  • 拡張性 必要に応じてクローンやテンプレートなどの機能でワークロードの伸縮が可能

コンテナの利用理由は殆ど上記で網羅されているように思えます。事実その通りです。
では、ここで逆に”仮想マシンではダメなのか?”という質問が生まれると思います。この点については仮想マシンで有るがゆえのチャレンジがあります。

  • スピード感が遅い
  • 消費するリソース量が多い
  • 一つのユニットのサイズが大きい

仮想マシンというユニットは、コンテナと違いOSを個別に持ちます。

Orientation and setup | Docker Documentation

上図では、左がコンテナ環境であり、右が仮想マシン環境です。仮想マシン環境の方が1レイヤー多いです。
これは仮想マシンという1つのユニット内に”ゲストOS”を持つためです。OSを持つということは起動のためのコンピュートリソース、ストレージリソース、またその個別のアップデートなどの様々なチャレンジがあります。

”コンテナ”というテクノロジーは、”仮想マシン”と一緒に説明され、より上位層での仮想化テクノロジーという説明がされるため、如何にも”仮想マシン”に置き換わるもの、のように見える記載が目立つ気がします。

しかしながら、私はそうは思っていません。というのは”コンテナ”という機能とセットでよく登場するのが”開発”という言葉だからです。逆にインフラで登場する主要機能を全てコンテナ化しようという思想は、開発環境のためのコンテナよりもまだ少ないように見えます。

現在では一個人が1台以上のネットワークに繋がる端末を持ち、その上でアプリケーションを通じて情報を得たり、ゲームをしたりというのが当たり前の時代です。このアプリケーションの開発をより迅速にするために登場したのが、仮想マシンよりもスピード感を持って展開、管理が可能なコンテナ環境であると言えます。

コンテナを利用した事例

Kubernetesがとても注目をされている理由の1つには、グローバルでもとても有名なサービス基盤がKubernetesによって支えられているからだと言えるでしょう。今回はとても有名な例を2つ紹介します。

今回本記事で取り上げているもの以外でのKubernetesの導入事例は、以下のURLからも閲覧が可能ですのでご興味が有る方は是非ご覧ください。

ケーススタディ – Kubernetes

Gmail, YouTube by Google

Googleが提供するサービス群”Gmail”や”YouTube”などが有名ですが、コンテナで動作しています。

cloud.google.com

Pokémon Go by Niantic

抑えておくべきキーワード

クラウドネイティブ

クラウドの特性を最大限に活かせるということを示す”形容詞的な用語”だと言えます。

クラウドの性質と言えばNISTが定義している以下の5つの特徴があると言えます。特にコンテナの世界で注目を浴びる特性は”Rapid Elasticity(スピーディーな拡張性)”の部分でしょう。

市場が変化するから、ビジネスが変化します。変化をするには常に市場のニーズに応じた変化であるべきです。サーバーの仮想化もそうですが、必要な時に必要なリソースを手に入れられるということがアクティブにビジネスを進めていくためには重要です。

DockerとKubernetes

DockerとKubernetesはよく同時に登場し、どちらもコンテナに関係があるソフトウェア、ということは知られています。私も”DockerとKubernetes、どちらを使えばいいのだろう”と考えましたが、結論は”両方を同時に使うことが想定されており、それぞれは異なる目的のソフトウェア”です。

Dockerは、コンテナ環境を提供してくれるソフトウェアです。仮想環境を提供してくれるvSphere ESXiのような位置づけというとイメージがしやすいでしょうか。

Kubernetesは、複数のコンテナのオーケストレーション、つまり管理を行うソフトウェアです。上記の例に当てはめるとvCenter Serverのようなイメージが近いかもしれません。

学習用リンク

動画で学びたい方

VMwareが提供するKubernetes初学者向けアカデミー KubeAcader

kube.academy

こちらのリンク内では、VMwareのエンジニアがKubernetesやコンテナについて初めてという方向けに動画とデモンストレーションでKubernetesの基礎から操作について紹介をしています。コンテンツは本記事投稿時点では英語のみです。

IBM デベロッパーアドボケイトが送るDocker & Kubernetes 入門


英語での情報提供は、スピードと最新情報に強いという点があります。
しかしながら最新情報よりも基礎が知りたいという方は日本語でまずは基礎から学びたいという人も多いのではないでしょうか。特に33分11秒から始まるKubernetesによるアプリケーションの無停止アップデートとロールバックはとても興味深いデモでした。

手を動かして学習したい方

Kubernetes公式ページ – チュートリアル

Kubernetesの公式ページ内では、チュートリアル – KubernetesとしましてWebページベースの解説とコマンドライン操作での実習が可能です。


直接該当のリンクにアクセスしたいという方は、以下のリンクからアクセスが可能です。

kubernetes.io

広範囲に学びたい方は”Katacoda”

Katacodaとは、ブラウザベースで学習ができるセルフペースラボ、学習コースです。
こちらはトップページの様子を画面キャプチャした様子ですが、Kubernetesに限らず様々な関連技術について学習コースや対話型ラボが用意されています。

こちらのリンクからアクセスが可能です。

www.katacoda.com

実は上で紹介をしているKubernetes.io上での対話式学習ページは、実際には本稿で紹介している”Katacoda”内の1つのコースです。

読み物、書籍で学びたい方

Cloud Native DevOps With Kubernetes by O’Reilly

期間限定であるかどうかが定かではありませんが、本記事寄稿時点では、O’Reilly社から提供されている以下の書籍のPDF版が無償提供されています。www.nginx.com

以下のpublickeyのページ内では本配布プログラムについて日本語でちょっとした説明がなされています。
本当に書籍と同じファイルが配布されているようですね。なんと気前のいいことでしょうか。

www.publickey1.jp

ちなみにAmazonでの製品としての取扱リンクもあります。そちらについては以下のURLからアクセスが可能です。

 

Kubernetes: Up and Running, Second Edition by O’Reilly & Microsoft

こちらもO’Reilly社提供の無料配布PDFです。書籍ではなくホワイトペーパーです。

azure.microsoft.com

どうしてMicrosoftが?と思う方は、Microsoft Azure上では既にKubernetes環境を実行出来るサービスとして、”Azure Kubernetes Service“が存在します。このため同社のKubernetesサービスの利用推進のための一貫として配布されているものだと推察されます。

また上図内の”Kubernetesのラーニングパスを確認する”からは、”50 days from zero to hero with Kubernetes”というタイトルで、50日でKubernetesのヒーローになれるというラーニングパスが示されたPDFが紹介されており、PDF内には様々な書籍や動画のリンクが存在します。
上記のDay 16-20で、本記事内で紹介した”Katacoda”が紹介されていますね。
そして上図で一番気になったのが、Day 1の”A Kubernetes Story: Phippy Goes to the Zoo”です。

日本語訳すると”Kubernetes物語:動物園に行ったフィッピー”…なんだこれは….(続く)

フィッピーと仲間たちシリーズ

Cloud Native Computing Foundation(通称CNCF)という団体は、クラウドの特性を活かした技術を推進していく団体です。そのCNCFが、コンテナ及びKubernetesについて理解を深めてもらうために作ったキャラクターが”フィッピーと仲間たち”です。

Phippy and Friends – Cloud Native Computing Foundation

同団体は、このキャラクターたちを通していくつかの物語を作っており、その内容はコンテナ及びKubernetesの仕組みや考え方を伝えるストーリーで構成されています。ここで紹介しているストーリーの読み聞かせ動画やPDF版の絵本は、上記のリンクから入手が可能です。さすがオープンソースということもあり、誰もが入手可能です。是非お子様に読み聞かせてみては?

良い子のためのKubernetes by Cloud Native Computing Foundation

まず第1弾がこちらです。コンテナ入門者、Kubernetes入門者の方はこちらから読んだほうがいいでしょう。

こちらのストーリーでは、迅速に独立したアプリケーション実行環境が欲しいキリン フィッピーが、自分の環境を求めてコンテナに乗って大海原に旅立つというシナリオです。ここにキャプテン Kubeが現れて、船に乗船。そのうえで他のコンテナたちと出会い、交流する中で様々な機能を得ていくというストーリーです。

フィッピー、動物園へ行く by Cloud Native Computing Founding & Microsoft

こちらは”Phippy Goest To The Zoo“というストーリーです。(といってもPDFファルです。左記リンクからアクセスが可能です。)
上記で紹介しました、”50 days from zero to hero with Kubernetes”の1日目の読み物として登場しています。なおYoutube上では読み聞かせの動画も用意されています。

こちらのストーリーでは、Kubernetesで管理をされたコンテナたちに対してどのようなサービス、機能が提供出来るかということがストーリー内に含まれています。

最後に

この記事を書き終えた時点では、基本的なコンテナ環境の存在意義やDockerとKubernetesの位置づけを捉えることが出来ました。

ところで、こんなに学習リソースが豊富に提供されているテクノロジーには出会ったことがありませんでした。面白い所は、単一の団体では無く、複数のベンダーがコンテナ環境に対する学習リソースを多様に提供しているのが印象的です。

オープンソースかつベンダーフリーということもあり、各社が同じテクノロジーについて様々なフォーマットで提供しているのは納得が出来ます。これに加えて、事例でも紹介したようなグローバルでも認知されているYoutubeやPokemon Goなどの基盤がコンテナ環境である、ということは、このテクノロジーが市場で高い注目をされ、ユーザーの利用検討が進む理由も納得です。

今後はコンテナ環境を対応出来るエンジニアの育成が急がれるのかもしれません。

コメント

  1. Yusuke Futaoka says:

    色々調べ物をしていたらこちらのサイトに辿り着きました。
    非常に理解しやすく勉強になりました。
    同じ業種をしているものとして難解な情報を発信されていることを尊敬します。

    • Yamato says:

      Futaoka様、コメントを頂きありがとうございます。
      私もコンテナ及びKubernetesは初学者ですので、その目線で同じような学習意思をお持ちの方に手軽に効率よく学んでいただけるように情報を配信出来たらと思っております。
      今後も多方面で情報を配信していく予定ですので、良ければご覧いただければ幸いです。