新春特別企画

2019年コンテナオーケストレーションの世界にもサーバレスがやってくる

この記事を読むのに必要な時間:およそ 2.5 分

各社のサーバレス・コンテナ・プラットフォームへの取り組み

一方で,仮想マシンを使わずコンテナを動かすための取り組み(サーバレス・コンテナ・プラットフォーム)が各社で始まっています。

この分野で一番最初に提供を開始したのは,Microsoft Azureの「Azure Container Instances(ACI⁠⁠」です。ACIの場合,秒単位の課金で数十秒でコンテナを起動することができました。

その後,この分野ではAWSの「Fargate⁠⁠,GCPの「Serverless containers」が提供されています。これらの機能を利用すると,サーバレスという名のとおり,仮想マシンの存在を意識せず,必要なときに必要なタイミングでコンテナを動かすことができるようになります。これを正しく利用することで,メンテナンスコストを大幅に削減することもできます。

Microsoftは2017年12月,このサーバレス・コンテナ・プラットフォーム(ACI)をKubernetesから利用するためのOSSプロジェクト,Virtual Kubeletを立ち上げ公開しました。この技術は Azure のプラットフォームだけではなく,次のような,他のプロバイダでも利用できるようになっています。

  • Alibaba Cloud ECI Provider
  • Azure Container Instances Provider
  • Azure Batch GPU Provider
  • AWS Fargate Provider
  • Hyper.sh Provider
  • Service Fabric Mesh Provider
  • Adding a New Provider via the Provider Interface

この技術が公開された当初は,まだKubernetesとつなげられるというレベルに過ぎず,Kubernetesの世界に完全統合まではできていませんでした。しかし,Microsoftは,その1年後の2018年12月,この技術をさらに発展させ,サーバレス・コンテナ・プラットフォーム(ACI)をKubernetesの仮想的なノードとして扱えるように,仮想ノード(Virtual Nodeパブリック・プレビュー版)を発表しました。

これにより,既存のYAMLマニュフェストファイルに対して,数行の追加設定を行うだけで,podをサーバレス・コンテナ・プラットフォーム(ACI)上で動作させることができるようになりました。起動時に,コンテナイメージをダウンロードするため,コンテナレジストリまでの距離や,ダウンロードするイメージのサイズに応じて起動時間は変わりますが,筆者の環境では,同一リージョンにあるコンテナレジストリから180Mバイトのイメージを入手し起動するまで,1podあたり30秒程で起動できるのを確認しています。

また,急激なリクエスト増加や高負荷に対応するために,一時的にpodを増加させたい場合,仮想マシンのキャパシティを気にすることなく,下記のようにpod数を手動で増やすこともできます。

$ kubectl scale --replicas=100 deployment/service-name

この例では手動で,100podを起動させていますが,通常であれば100台のpodを動かすために,仮想マシンのノードを何十台も用意しなければなりませんでした。しかし,仮想ノードを利用することで物理的な仮想マシン(ノード)の数は気にすることなく,仮想ノードの構築可能な上限値いっぱいまでスケールをさせることができます。また,手動でのスケールだけでなく,オートスケール(HPA)による増減も可能です。

最後に

Knaitveをはじめとするpodレベルでのサーバレス技術,さらには,Virtual KubeletのようにVirtual Nodeで実現するサーバレスを実現する技術,それぞれ機能改善や品質改善が必要な点はまだまだあり,Kubernetesにおけるサーバレスは始まったばかりと言えます。

それをふまえても,2019年はKubernetesにおけるサーバレスに対する各社の取り組みが,さらに活発になり実際に本番環境で使えるようになることが期待できる1年になるのではないかと筆者は考えています。

願わくば,近い将来,双方の技術が組み合わさった真のサーバレスが実現できるようになることを期待しています。

著者プロフィール

寺田佳央(てらだよしお)

Microsoft Corporation

シニア・クラウド・デベロッパー・アドボケイト

 

2001年サン・マイクロシステムズ株式会社に入社し,GlassFishエバンジェリストとして活動。

2010年,OracleのSun買収後,日本オラクル株式会社でJavaエバンジェリストとして活動。Javaの最新技術情報の提供や,Java コミュニティ活動の活性化を,日本Javaユーザ・グループ(JJUG)とともに行ってきた。

2015年7月,日本マイクロソフト株式会社に移籍し,移籍後もなお,Javaエバンジェリストとして,MicrosoftプラットフォームにおけるJavaの利用促進・啓蒙活動を実施中。

2018年7月より,Microsoft Corporationで日本人初のクラウド・デベロッパー・アドボケイトとして活動を開始。

2016年7月,日本人で2人目となるJava Championに就任。JJUG幹事の一員でもある。

Blog:https://yoshio3.com

GitHub:yoshioterada

Facebook:yoshio.terada

Twitter:@yoshioterada