新春特別企画

Kubernetesの動向予測 2019 => 2020

あけましておめでとうございます。サイバーエージェントの青山真也@amsy810です。昨年は国内最大のCloudNativeカンファレンスCloudNative Days Tokyo 2019のCo-chairを務めさせていたただいたり、かれこれ7回目のKubeCon + CloudNativeConに参加したりと、CloudNativeやKubernetes漬けでした。新春企画ということで、今回はトピックをいくつかに絞ってKubernetes関連の2019年のまとめと今年の予測を少ししてみます。

Kubernetes最新動向

Kubernetesには機能追加をコミュニティに提案するKubernetes Enhanced Proposals(KEPs)と呼ばれる仕組みがあります。Kubernetesのプロダクション利用が進むにつれ、KEPsの提案や実装が進み、Kubernetes本体に対しても細かい実装が導入されています。例えば最近の一例では、データセンタのリージョンやゾーンを意識したTopology-aware Routing・NUMA Topologyを意識したTopology Manager・IPv4/v6 Dual Stack対応・PersistentVolumeのSnapshot機能・大規模な環境におけるスケーラビリティの向上のためのEndpointSliceなどの機能拡張が入ったりしています。このような拡張機能によってKubernetesの適用範囲は広まり続けています。今後もより幅広いユースケースに対応するべくKubernetesは細かなところまで進化し続けていくことでしょう。また、KEPsは誰でも提案できるようになっています。皆さんが必要としていて他の人も必要になるであろう機能を実装する際には、コミュニティへ提案することも考えてみてはいかがでしょうか。

Kubernetesの醍醐味は、独自のResourceを定義し様々な物事をKubernetesのReconcile Loopモデルに則って自動管理することが可能になることです。Kubernetes-nativeなエコシステムとして拡張性の根幹となるこのCustomResourceの機能もとうとうGAになりました。他にもこのCustomResource Controllerを実装するためのkubebuilder v2がリリースされるなど、今後はより安定してエコシステムの機能開発が進んでいくでしょう。

More Managed KubernetesなServerless Kubernetes

昨年のKubernetesではKubernetesクラスタのノードを意識しないパブリッククラウド上のソリューションが様々出揃ってきた年でもありました。通常のKubernetesでは、マスターノードはフルマネージドで、ワーカーノードにどのようなインスタンスタイプ・どのようなラベルが付与されたノードを利用するか等は利用者側が管理する必要があります。また、ワーカーノードのリソースが枯渇してきたときには、クラスタオートスケーラでワーカーノードを自動的に追加する方法がありますが、前述の通りどういったノードを利用するかも事前に定義しておく必要がありました。ここでは、ユーザ側は起動するPodだけにフォーカスし、その下回りとなるワーカーノードをあまり意識しなくてよくなる方法について紹介します。

GCPのGKE(Google Kubernetes Engine)では、自動ノードプロビジョニングという機能が用意されています。通常のクラスタオートスケーラでは、事前にどのようなワーカーノードを利用するかを決めておく必要がありました。自動ノードプロビジョニングでは、利用者が要求したPodに基づいて、自動的に選択されたノードを用意することが可能です。例えば、4コアが要求されるPodを起動しなければならなくなった際に、2コアのノードプールしか存在しない場合には、自動的に新たに4コアのノードプールが作成されます。他にもワークロードの分離のためにTaintsやnodeAffinityの設定がされているPodがスケジューリングされた際に、合致するラベルのノードプールがない場合にも自動的にその条件に合致する新たなノードプールが作成されます。この機能を使うことで、利用者はワーカーノードの細かく意識しなくてもよくなります。

AWSのFargate on EKS(Elastic Kubernetes Service)では、Podが起動するときに、Kubernetesのワーカーノード上で起動するのではなく、Fargate上で起動させます。FargateはAWSがマネージしているコンテナ向けサーバーレスコンピューティングエンジンで、膨大なコンピューティングクラスタが裏側に存在しています。つまり、EKS on Fargateではワーカーノードを意識するということ自体がほとんどなく、またクラスタオートスケーラのようにワーカーノードを増やすタイミングが存在しないため、Podを起動する際にはいつでも早い時間で起動することが可能です。EKS on Fargateはまだリリース(2019/12)されて間もないため、今後の機能追加にも要注目です。

Microsoft AzureのAzure Kubernetes Serviceには、Virtual Kubeletを利用したAzure Container Instancesとの連携機能が用意されています。Azure Container Instancesも裏側にAzureが管理している膨大なコンピューティングリソースが用意されており、その上でコンテナを実行できるマネージドサービスです。もう一つの構成要素であるVirtual Kubeletは、Kubernetes上に仮想的なノードを用意し、そこにスケジューリングされたPodを外部のコンピューティングプール上で起動させるためのOSSです。Virtual Kubeletには様々なProviderがあり、ACI用のProviderも用意されています。実装方法は違えどEKS on Fargateとコンセプト的には似ており、Podをワーカーノードではなく外部のコンピューティングクラスタ上で起動します。

Stateful Application on Kubernetes

データベースなどのステートフルなアプリケーションをKubernetes上で実行するには、VMに比べて考えることが非常に多くなるため、一概に推奨できるものではありません。例えば、パブリッククラウドを利用している場合は、一般的にはマネージドサービスのDB・KVS・Queueなどを利用するほうが良いと思っています。一方でオンプレミス環境やベンダーロックインを排除したハイブリッドクラウド構成などを考えた場合には、こういったステートフルなアプリケーションもKubernetes上で実行することで、Database as a ServiceやKVS as a ServiceをKubernetes上で展開したいケースもあります。

前述のマネージドサービスのDBなどを利用する場合でも、Kubernetesで管理する方法が提供されています。以前はOpenServiceBrokerAPIを利用したServiceCatalogというプロジェクトもありましたが、現在はあまり活発に開発されていません。その代わり、クラウドベンダー各社は自社のマネージドサービスをKubernetesから管理するためのソリューションGCP ConfigConnectorAWS Service Operatorなど)を提供しているケースも増えてきました。Kubernetes上で直接DBプロセスが動くわけではありませんが、利用者からするとマネージドサービスをシームレスに利用できるため、Kubernetesの世界で完結することが可能です。

また、Kubernetes上でDBなどを実行することに対しても、海外で事例を聞くケースが増えてきました。国内でも様々なユーザ企業が検証などの取り組みを進めており、2020年は国内でプロダクション利用の事例を聞けるのではないかと期待しています。

Kubernetes for Enterprise

Enterpriseな領域の先進的な話題としては、EdgeにKubernetesを利用するユースケースや、ハイブリッドクラウドやマルチクラウドといったテーマについても多くの話題が溢れていた印象です。海外ではWalmartが大規模に店舗側環境にKubernetesを商用利用している事例なども公開しています。2020年は、様々な形態のEdge環境でKubernetesを利用する事例や、複数のKubernetesクラスタをフェデレーション・オーケストレーションする方法についても発展すると考えています。

また2019年の後半では、いわゆる国内の堅い企業での採用なども多く耳にしました。現状ではまだ表に出てない話もたくさんありますが、2020年はこうした企業での事例も多く聞ける年になると思っています。

国内のCloudNativeに向けて

今回はKubernetesを中心に最新事情についてお伝えしましたが、我々が実現したいのはCloudNativeな世界です。昨年の国内におけるCloudNative化の普及率は特定の企業や業種の事例が多かったですが、新たに取り組みを始めている国内企業も増えているため2020年は様々な場所での利用事例などが公開されていくでしょう。なお、昨年末に実施されたKubeCon + CloudNativeCon NA 2019(2019/11)では、日本は参加者が多い国の中で上から3番目(アメリカ、カナダ、日本)だったことからも国内での注目度も高いことが分かります。

最後になりますが、本年度も国内最大のCloudNative技術カンファレンスとしてCloudNative Days Japan 2020が下記の通り開催されます。昨年実績のCloudNative Days Tokyo 2019では2 Days * 8 Tracksで100セッション以上を実施し、参加者は1,600人に上りました。本年も各都市で実施するため、参加希望者やスポンサー希望の企業様はぜひチェックしてみてください。

  • CloudNative Days Fukuoka 2020 @ ACROS Fukuoka, June 17, 2020
  • CloudNative Days Tokyo 2020 @ Hotel Gajoen Tokyo, September 8-9, 2020
  • CloudNative Days Kansai 2020 @ TBD, TBD

おすすめ記事

記事・ニュース一覧