KubeCon China開催。MicrosoftのServerless DayでKubernetesの未来を垣間見る
CNCF(Cloud Native Computing Foundation)とLinux Foundation AsiaがホストするKubeCon+CloudNativeConは、2018年11月13日~15日まで上海で開催された。参加者は約2500名で、そのうち2000名ほどは中国からの参加者であったという。会期は3日だが、初日の11月13日はCo-Located Event、つまり併催されるイベントのための日ということで、Kubernetesのワークショップやトレーニング、Pivotalが開発をリードするCloudFoundry Day、SDNのTungsten Fabric(JuniperがオープンソースのSDNとして開発していたOpenContrailがLinux Foundationに移管されて改名された)のワークショップ、そして中国ならではのCaicloudやAlibaba Cloud主催のイベントなどが開催された。
筆者はその中から「Microsoft Serverless Day」と題されたイベントに参加した。Microsoftの考えるサーバーレス、そしてKubernetesの未来についてレポートしたい。
ちなみに併催されたイベントは、主に中国人を対象に想定したものも多く、スピーカーは中国語を話し、同時通訳で英語に翻訳、英語のスピーカーの場合は中国語に翻訳という形式が多かった。これはKubeCon全体を通して共通だった。それくらい中国語がメイン、英語はサブセットという扱いであったが、MicrosoftのServerless Dayはスピーカーは全員英語、パネルディスカッションに参加したCaicloudとAlaudaの中国人CTOも英語で対話していたのが印象的だった。
Kubernetesとサーバーレス
冒頭に登壇したのは、MicrosoftのBrendan Burns氏だ。Burns氏はKubernetesを作り上げたエンジニアのひとりとして有名だ。今回はKubeConの最終日のキーノートに同じテーマで登壇することになるのだが、この日のスピーチはその内容をより丁寧に解説するというものだった。
タイトルは「Future of Kubelets」というもので、Kubernetesの未来、特にサーバーレスへの対応を紹介するものだ。
Burns氏は「世界はすでにサーバーレスに向かっている」ことを語ったが、特に強調したのは、「仮想化やコンテナ化はオペレータにとっては大きな利益を与えたが、デベロッパーにとってはそれほど大きな貢献をしていなかった」と言う部分だ。またクラウドネイティブなアプリケーションは、すでにAPIをベースにしたものに移行しており、サービスをAPIとして機能提供する「As-a-Service」に向かっていることを説明した。
またデベロッパーにとって、サーバーやノードが仮想化されたとしてもプログラミングはそれほど変わらなかったし、むしろAPIをCallするスタイルになったことが変化として大きいという。そして、デベロッパーにとって最もシンプルにコードを書くスタイルがサーバーレスであると語った。
そしてKubernetesの果たしている役割についてスケジューラー、マシンマネージャー、そしてオーケストレーターの3つの側面があると説明。そのうち実際にシステムを運用する際に重要となるのは、スケジューラーとマシンマネージャーの側面だが、デベロッパーにとっては最後のオーケストレーターのほうが重要だと言う。スケジューラーとマシンマネージャーは未だにハードウェアに縛り付けられており、運用を担当している人間にとっては重要な機能である。このためにKubernetesは、デベロッパーのためのインフラストラクチャーというよりも運用担当者、つまりオペレータのためのツールであると説明した。
そして本当の意味でデベロッパーがクラウドネイティブなプログラミングを行うためには、サーバーレスが必須だったとして、そこからKubernetesがサーバーレスになるための方法論について説明を行った。
Burns氏は、Kubernetesがサーバーレスになる際の方法論として3つのアイデア(選択肢)を説明した。1つ目は、サーバーレスな実装を全てゼロから作り直すというもの。2つ目は、サーバーレスに適したオブジェクトを新たに作るもの。そして3つ目が仮想的なKubeletを作り、その先にノードを必要としないPodを実行するVirtual KubeletとVirtual Nodeを実装するというものだ。
Burns氏は3つ目の選択が最も妥当だろうということで説明を行ったが、実際には「この実装案にもまだまだ修正の可能性がある。議論は続けているので、興味がある人はServerless workgroupの議論に参加して欲しい」と語り、この時点ではまだ100%の確信を持って説明しているというようすではなかったことは記憶しておきたい。つまり、従来のKubernetesの資産を活かしながら、仮想マシンを要求しないサーバーレスの環境でKubernetesがPodをオーケストレーションすることが可能になるという。これは、新旧のワークロードのどちらにも対応できることを優先したということだろう。
個人的には「ジュークボックスにSpotiftyを接続したような実装」だというのが最初にこれを聞いた時の印象だ。つまり従来のワークロードを維持しつつ、新しいクラウドネイティブな環境を繋ぐ方法論として仮想Kubeletを置いてそれを経由する形でNodelessなPodに対応しようとする考えなのだろう。
Burns氏は、仮想マシンの管理が必須な現在のKubernetesを、Virtual Kubeletを使って拡張するのが妥当だと考えているようだ。また、この考え方を延長すれば、サーバーレスコンテナだけではなく、IoTなどのエッジにおけるコンテナ実行環境に繋がっていけるともコメントした。
Kubernetesとエコシステム
次に登壇したGabe Monroy氏は、MicrosoftのAzureにおけるKubernetes関連のサービスとツールについて解説を行った。
ここではNodelessなPodの実装例として、Azure Container Instances(ACI)が紹介された。先ほどBrendan Burns氏が紹介したサーバーレスの実装であるVirtual Kubeletを使ったNodeless Podが、すでにAzureの中で動いていることを紹介するかたちとなった。
またKubernetesに関連したツールということで、Helm、DraftそしてBrigadeを紹介した。Monroy氏はMicrosoftが買収したDeisの元CTOであり、DeisがHelmの開発をリードしていたことを考えると、MicrosoftがKubernetesのエコシステムで有利なポジションを占めていることは理解できる。
HelmはすでにCNCFにホスティングされたプロジェクトであり、いわばKubernetesのパッケージマネージャーとしては最有力なオープンソースソフトウェアと言えるだろう。しかしKubernetesのエコシステムは拡大を続けており、新たなベンダーやツールが日夜登場している状況である。競争原理によって良いものが残るということは良いことなのだろうが、選択肢が多すぎる状況は選択するエンドユーザーにとっては悩ましい問題とも言える。
その後、Brendan Burns氏、Gabe Monroy氏とCaicloud、AlaudaのCTOなどによるパネルディスカッションやAKSの詳細な解説などがあり、非常に内容の濃いミニカンファレンスとなった。
また他のオープンソースツールとの連携もMicrosoftにとっては重要な訴求ポイントということで、Helm、Draft、Brigade以外にもJeagerやFluentdなども紹介され、オープンソースのコミュニティへの気遣いをみせた形となった。その際、Networkingの部分にさり気なくCalicoを開発するTigeraが入っていたことは注目したい。
セッションの内容は技術的には包括的なものから最新のアップデートまで紹介され、満足度の高いものとなったように思える。MicrosoftとしてはKubernetes自体の進歩も重要だが、パブリッククラウドベンダーとして、Kubernetesのエコシステムにおいて先駆けとなりたいという意志を感じるものだった。
最後にAKSの事例として紹介された海運業のMAERSKは、MesosのDC/OSを試したものの、上手く行かずにAKSに乗り換えたという経緯もあり、十二分にAKSの魅力を訴求した内容であった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 「Flatpak 1.12.0」リリース
- Debianベースのデスクトップ向けLinuxディストリビューション「Nitrux 3.7.1」リリース
- デスクトップ環境向けLinuxディストリビューション「elementary OS 8(Circe)」リリース
- デスクトップ向けLinuxディストリビューション「SparkyLinux 7.3」リリース
- デスクトップ向けLinuxディストリビューション「Solus 1.1」リリース
- Ubuntuベースのデスクトップ向けディストリビューション「Freespire 7.7」をリリース
- デスクトップ環境「cinnamon 6.4」リリース
- 「Fedora 25」 正式リリース
- グラフィカルユーザインタフェースとコマンドラインインタフェース
- 「Fedora 27」 リリース