CodeZine(コードジン)

特集ページ一覧

我々はなぜKubernetesを使うのか――クラウドネイティブ時代のアプリケーション開発【デブサミ2019】

【14-A-4】 Cloud Native時代における Docker / Kubernetes による開発

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

コンテナオーケストレーションエンジンにKubernetesが選ばれる理由

 利点の多いコンテナ型仮想化だが、小さいサービス単位で作成していくため、増え続けるコンテナをどのように管理するかが課題となってくる。そこで出てくるのがKubernetesに代表されるコンテナオーケストレーションエンジンだ。複数のDockerホストの管理やコンテナの死活監視、スケジューリングやスケーリングなど、コンテナ管理に関する様々なタスクをこなす役割を持つ。

スライドP.44:コンテナオーケストレーションエンジンを使用する利点は多く、実態としてはコンテナとセットで適用されることが大半
スライドP.44:コンテナオーケストレーションエンジンを使用する利点は多く、実態としてはコンテナとセットで適用されることが大半

 コンテナオーケストレーションエンジンを採用することで、先に挙げたクラウドネイティブの最後の定義である「堅牢な自動化(により、頻繁かつ期待通りに最小限の労力で大きな変更が可能)」までを含めた実現が容易となる。

 なお、Kubernetes以外にもDocker SwarmやApache Mesos、マネージドサービスではAmazon ECSなどもこれにあたる。そのように数あるエンジンの中でKubernetesが流行した背景には、ツールとしての使い勝手もあるが、その「中立性」が大きかったという。ネットワークやストレージに関する仕様をインターフェースとして定めることで、競合ツールに比べて様々なOSSやベンダーが参入しやすい環境が構築されているそうだ。

Kubernetesが実現する自動化、ポイントは3点

 Kubernetesの導入により実現できること。その代表例として挙げられた3点のうちのひとつ目は、Infrastructure as Code[5]の実現だ。Kubernetesの定義は基本的にYAML形式のテキストファイルとなるため、宣言的に記述することが可能となる。例えばコンテナのレプリカ数や転送先のポート番号と対応するコンテナの指定など、そのいずれもがYAMLでの定義となるため、他環境への可搬性が保たれている。

[5] Infrastructure as Code:手順書ではなくコードでインフラの構成管理を行うことでインフラ構築を自動化し、人為的ミス削減や作業の効率化、再構築の容易化を実現する手法。IaCとも呼ばれる

スライドP.52:シンプルなYAML形式の定義によりInfrastructure as Codeを実現
スライドP.52:シンプルなYAML形式の定義によりInfrastructure as Codeを実現

 ふたつ目は「セルフヒーリング」だ。例えば、定義ファイルに指定したコンテナのレプリカ数は起動時のみへの指定ではなく、その数を維持し続けようとする。ノードの障害によりコンテナ数が減少した場合、別のノード上で起動するなど、障害時の影響を最小限にとどめるよう自動復旧を行う。

スライドP.53:定義ファイルに指定した内容を保ち続けるよう、自動で復旧するという「セルフヒーリング」
スライドP.53:定義ファイルに指定した内容を保ち続けるよう、自動で復旧するという「セルフヒーリング」

 最後に挙げられたのは、Immutable Infrastructure[6]を主軸とした自動化という観点だ。コンテナイメージのアップデートをする際、その前後にロードバランサからの除外及び再追加を行う必要があるが、VMと異なりこれらの流れはKubernetesが自動で実施してくれる。これにより運用コストが大きく減少する。

[6] Immutable Infrastructure:インフラを不変(Immutable)とし、一度構築した環境に対しバージョンアップやパッチの適用などの変更作業を行わないという考え方。環境構築の自動化と対で用いられる

「エアコン」でわかるKubernetes

 Kubernetesの特徴として強調されたのは、単純に定義ファイルの内容を実行して終わりではないということ。(1)常に現在の状態を観測し、(2)それと理想状態とを比較して、(3)差分に対する処理を実行する、「コントロールループ」と呼ばれるサイクルを繰り返している点が特に大きなポイントだという。これを青山氏はエアコンに例え、(1)現在の湿度と気温を観測し、(2)それを定義した数値と比較し、(3)加湿器とエアコンを制御して適温に近づけようとする機能であると解説した。

 身近な家電を用いたこの例は極端なものではなく、自前のプログラムを書くことでどんなことでもKubernetesで管理できるようになるという。実際、海外ではデータセンターをまるごとKubernetesで管理するような例もあるそうだ。

スライドP.63:エアコンの制御で例えられたKubernetesの「コントロールループ」という機能
スライドP.63:エアコンの制御で例えられたKubernetesの「コントロールループ」という機能

Kubernetesの未来

 Kubernetes解説の締めとして、セッションの終わりには業界における現状について触れられた。Kubernetesを取り巻く環境は、昨年CNCFを卒業した後も活性化し続けているという。KubeConと呼ばれるカンファレンスは2年前に比べ8倍近い来場者数になったという調査結果もある通り、ユーザーは増加の一途をたどる。また、当初の開発ベンダーであるGoogle以外の大手クラウドベンダーも、Kubernetesに対応するマネージドサービスを出してきており、すでにデファクトスタンダードになったと言って過言ではないだろう。

 Kubernetesはどこまでいくのか。その未来予測として、青山氏はLinux FoundationのExecutive DirectorであるJim Zemlin氏の言葉を引用して締めくくった。

 「Kubernetesはクラウド界のLinuxになるのではないかとJim Zemlinは言っています。Linuxがずっとあり続けたように、Kubernetesもクラウド界のOSとして存在し続けるのではないかと。わたしもそうなると思います」 

スライドp.81:「Kubernetesはクラウド界のLinuxになる」と予測するJim Zemlin氏の発言
スライドp.81:「Kubernetesはクラウド界のLinuxになる」と予測するJim Zemlin氏の発言


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:【デブサミ2019】セッションレポート

もっと読む

著者プロフィール

  • 西野 大介(SOMPOホールディングス株式会社)(ニシノ ダイスケ)

     SOMPOホールディングス株式会社デジタル戦略部(SOMPO Digital Lab)勤務。損保ジャパン日本興亜グループにおける先進技術の研究開発を担当。過去には基幹システムの開発にも従事し、SoR/SoE双方の開発において幅広い経験を持つ。本業以外では、CodeZineの連載をはじめ、国内/海外...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5