新春特別企画

Kubernetesの動向予測 2019 => 2020

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

あけましておめでとうございます。サイバーエージェントの青山真也@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をワーカーノードではなく外部のコンピューティングクラスタ上で起動します。

著者プロフィール

青山真也(あおやままさや)

株式会社サイバーエージェント AI事業本部 インフラエンジニア/Developer Experts(Kubernetes/CloudNative領域)

OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築。国内カンファレンスでのKeynoteや海外カンファレンス等,登壇経験多数。世界で2番目にKubernetesの認定資格を取得。著書に『Kubernetes完全ガイド』『みんなのDocker/Kubernetes』。現在はOSSへのContribute活動をはじめ,Cloud Native Days TokyoのCo-chair,CNCF公式のCloud Native Meetup Tokyo・Kubernetes Meetup Tokyo・KubeCon日本交流会のOrganizerなどコミュニティ活動にも従事。

Twitter:@amsy810
Portfolio:https://amsy.dev/

バックナンバー

新春特別企画

  • Kubernetesの動向予測 2019 => 2020

バックナンバー一覧