Googleが生んだ「Kubernetes」がポケGOやメルカリを支えるほどの成功を収めた理由とは?
Googleによって開発され、CNCFによってメンテナンスされている「Kubernetes」は、Dockerをはじめとするコンテナを管理するシステムで、位置情報ゲームのPokemon GOやフリマアプリのメルカリなど、さまざまなアプリやネットサービスで利用されています。Amazon EKSやGKEといったSaaSとしても提供されるKubernetesが、なぜ広く普及するに至ったのかを、楽天のエンジニアであるRicardo Aravena氏が語っています。
Why is Kubernetes getting so popular? - Stack Overflow Blog
https://stackoverflow.blog/2020/05/29/why-kubernetes-getting-so-popular/
2007年に登場したLinuxカーネルのプロセス分離機能であるcgroupsや、同じくLinuxのコンテナ技術であるLXCなど、など、2000年代後半に入ってさまざまなコンテナ技術が台頭してきました。2013年にはDockerがリリースされ、コンテナによる仮想化技術は次第に普及していきます。そうして2015年に登場したKubernetesは、複数のコンテナを管理するコンテナオーケストレーションにおいて業界標準となっているとAravena氏は語っています。
Aravena氏はKubernetesの特徴として「YAMLで設定を書ける」ことを挙げています。PuppetやChefといった構造化データによる「Infrastructure as Code」を、Kubernetesは「Infrastructure as Data」へと発展させたのこと。Kubernetesなら、下記のようにYAMLで設定ファイルを記述すればコードを記述しなくても環境構築ができてしまいます。
また、GitなどでYAMLのバージョン管理を行えば、いつ、誰が、何を変更したかを正確に知ることができるとAravenaは指摘。こうした管理方法は組織の透明性やあいまいさの排除による効率化、自動化につながっていくと語られています。
さらに、YAMLでの管理を行うKubernetesは「スケーラビリティ」に優れているとAravena氏。例えば、より高負荷なトラフィックに対応したい場合は、稼働中にオートスケールするPod数の最大値「maxReplicas」を変更するだけでよく、簡単にリソースをスケールさせることができるとAravena氏は語っています。
ConftestやOpen Policy Agentを組み合わせてYAMLを監査することで、セキュリティの問題を発見することも可能。AWSなどのクラウドサービスと高い融和性があることもKubernetesの優れている点として挙げられています。
Kubernetesは機能を自分で追加できる「拡張性」にも優れているとのこと。KubernetesはPodやDeployment、StatefulSetなど、多くの機能によって構成されていますが、利用者はCustomResourceDefinitions(CRD)によって独自のリソースを追加できるとのこと。CRDによって追加したリソースを管理するOperatorも自分で設計することができるとAravena氏は語っています。
Kubernetesコミュニティでは、Operatorを開発する手助けとなるOperator SDKが提供されており、Operatorを迅速に開発することができるとのこと。例えば、Operator SDKを用いた下記コードを実行すると……
YAMLとGoから構成されるOperator開発のひな型が得られます。APIやコントローラーの追加、Operatorのビルドやコンテナレジストリへの設置もOperator SDKで行うことができるとのこと。OperatorはKUDOであればYAMLだけでも開発できるとAravena氏は語っています。
Kubernetesはここ数年間、およそ四半期ごとにメジャーリリースが行われており、新機能の追加も多数あるとのこと。KubernetesのGitHubにおける活動状況を表示したダッシュボードを見ても、活発な開発が行われていることがわかるとAravena氏。新機能の追加はクラスター管理者にとっては多様な処理を行える柔軟さにつながると語られています。
Kubernetesの強みはその機能だけでなく、コミュニティにもあるとのこと。1年に3回開催されるKubeCon+CloudNativeConは、新機能の活用といった目的のほか、Kubernetesやそのエコシステムを向上させる目的で、何千もの技術者が集うオープンソースに関する世界最大のイベントです。Aravena氏は「コミュニティが互いに関わり合い、新参者を歓迎する意識的な努力がなければ、Kubernetesはこれほどの成功を収めることはなかっただろう」と語っています。
今後は、エンジニアがコードを実行する基盤であるインフラを気にすることなく、より開発に集中できるようにすることが課題とのこと。Kubernetesを用いたKnativeやOpenFaaSによるサーバーレスがそうした課題に立ち向かうために有効だとAravena氏は語っています。
・関連記事
AWSの膨大で複雑なサービス群をすべて「たった1行」で説明していくとこうなる - GIGAZINE
GoogleのGmailやクラウドなどのサービスを支える技術「Borg」の統計情報が公開 - GIGAZINE
Googleの徹底的なシステム障害への対応「SRE」の中身とは? - GIGAZINE
Googleによるシステム開発・維持管理ノウハウをまとめた本が無料公開中 - GIGAZINE
Pythonでコードを書いてAWSやKubernetesのシステム構成図を出力できる「Diagrams」 - GIGAZINE
・関連コンテンツ