KubeCon + CloudNativeCon Europe 2019 現地レポート 1日目

こんにちは、Necoプロジェクトのmitzです。

f:id:cybozuinsideout:20190522131244j:plain

今年もKubeConの季節がやってきました。今年も初回はヨーロッパです。我々はCo-located eventのCephaloconに2日間参加した後の参加となります。Cephaloconについてのレポートはこちらを御覧ください。

blog.cybozu.io

blog.cybozu.io

去年のヨーロッパ開催はコペンハーゲン(デンマーク)でしたが、今年はバルセロナ(スペイン)です。

イベント全体の雰囲気や、数多くのセッションの中で印象に残った発表などを簡単に紹介していきます。

Keynote

CNCF Project Update - Bryan Liles, Senior Staff Engineer, VMware

CNCF Projectのアップデートです。前回のNorth Americaからおよそ半年ですが様々な出来事がありました。 まずはSandbox, Incubator, Graduated projectsが更に増えたことです。現在はそれぞれ16, 16, 6 projectというこでCNCFが管理するProjectは合計で38になりました。ここでは2つほど簡単に紹介します。

f:id:cybozuinsideout:20190522024436j:plain

Sandbox: OpenEBS - Container Attached Storage

OpenEBSはMAYADATA社が開発した、独自の形式でKubernetesにPersistent Volumeを提供するソフトウェアです。以前の調査で、最終的にはNecoでの利用候補からは外していますが、CNCFによる運営となり成熟されたソフトウェアに進化したのではないかと密かに期待しています。

f:id:cybozuinsideout:20190522024235j:plain

Incubating: Helm Docs | Helm

HelmはKubernetesのパッケージマネージャーであり、生のmanifestを用意せずともテンプレート化およびパラメータ化された形式でLinuxのパッケージ管理システムのように自由にデプロイすることが可能です。先週3.0.0-alpha.1がリリースされ、Tiller podのデプロイが不要となりました。Helm界隈では一つの大きなターニングポイントであり、これまではTiller podのデプロイをしておかないとhelmによるアプリケーションのデプロイができませんでしたが、一つの大きな依存がなくなったため、より快適なデプロイが可能になるでしょう。

Getting Started in the Kubernetes Community - Lucas Käldström, CNCF Ambassador, Independent & Nikhita Raghunath, Software Engineer, Loodse

若いCNCF Ambassador(大使)二人が、Kubernetes Communityの魅力について語っています。NikhitaはSIG Community ExperienceのLeadをしており、Kubernetes Communityのコミュニケーションの円滑を行っています。Individual(個人)の貢献は仕事の上でのステータスを示すことができるため、キャリアアップにも効果的であること、イベントの参加によって新しい発見があることなどが挙げられています。また、コミュニティの中で自分を向上させるためには「SIG(分科会)のメンバーと会話すること」「KEP(Kubernetes Enhancement Proposals)に欲しい機能や改善を提案すること」です。もし仕事でKubernetesを使っているけど足りない機能を拡張したいなんてことがあれば、Forkして実装せずにまずはUpstreamに関わることが重要と思いました。

f:id:cybozuinsideout:20190522043909j:plain

LucasはSIG Cluster LifecycleのChairを務めています。彼のお話では「どのようにKubernetes Communityに入ったか」というテーマがとても印象に残りました。彼は高校生のとき、Raspberry Piを使ってKubernetes clusterを構築しました。当時のKubernetesはまだIntelベースのビルド体系になっていたため、プラットフォーム非依存化を目指してPull Requestを作成しました。Kubernetes 1.14ではWindows NodeがGAとなり安定してWindowsでもKubernetes clusterが組めるようになったのですが、彼のようなちょっとしたきっかけが周りの考え方の変化に繋がったのではないかと感じています。

f:id:cybozuinsideout:20190522044256j:plain

Democratizing Service Mesh on Kubernetes

サービスメッシュにも標準化の時代がやってきます。Microsoft社はService Mesh Interface(SMI)本日のプレスリリースと合わせて発表しました。汎用のAPIインタフェースを提供することで、SMIは開発者が特定の実装に縛られることなくサービスメッシュ機能を使用できるようにします。 アプリケーションを変更しなくても、実装を実験したり変更したりできます。 SMIは、Kubernetes標準のリソースであるIngressやNetworkPolicyのような考え方とほとんど同じです。 SMI仕様では、Service Mesh providerが独自の実装を提供できるようにする一連の共通APIを定義しています。 つまり、providerはSMI APIを直接使用するか、またはoperatorを構築してSMIをNative APIに変換できます。

f:id:cybozuinsideout:20190522064737j:plain

Kubernetes Project Update - Janet Kuo, Software Engineer, Google

Kubernetes projectのアップデートです。2003年のGoogleのBorg projectから始まり、cgroups、Container、Dockerの登場という経緯を経て、スタートから5年が過ぎたKuberenetes。現在、Kubernetesは1億GitHub projectある中で2番目のPull request数、4番目のIssue数を誇る巨大プロジェクトとなりました。

f:id:cybozuinsideout:20190522065712j:plain

Kubernetes 1.14では安定化・成熟化に注力したバージョンでした。次のバージョンで目指すポイントは拡張性の向上として現在betaであるCRDの対応化、スケーラビリティの強化などがあります。後者については例えばNode Statusを定期的にチェックする場合、control plane上のetcdに状態を記録します。しかしNodeが5000台あると、300-600MB/分のデータ保存が必要になります。etcdへの負荷が非常に大きくなるため、改善が必要です。解決方法としてNodeLeaseという機能の提案がKEPとして挙げられています。

enhancements/0009-node-heartbeat.md at master · kubernetes/enhancements · GitHub

CFP Tracks

P2P Docker Image Distribution in Hybrid Cloud Environment with Kraken - Yiran Wang & Cody Gibb, Uber

Uber社が開発したP2P型コンテナイメージ配布システム「Kraken」の紹介です。彼らは以前からコンテナイメージ管理に対する最適化を進めています。Docker Registryのスケールなどを検討したこともあったそうです。KrakenはP2PによるLocal Docker registry間の接続を行いますが、Node〜Nodeの接続先を決めるのは"Random regular graph"というグラフ理論(離散数学)のアルゴリズムを元に、近距離なNodeを見つけて、コンテナイメージを共有します。共有中のIndex情報を外部に記録しておく必要があり、現在はS3 / HDFSに対応しています。またすべてのNodeが同じコンテナイメージを保存するため、時として不要なイメージが残り続けてNodeの空き容量を使いすぎることがあるでしょう。そこで、保存されたイメージにTTLを用意しておき、一定の時間使われなくなったら自動的に削除する仕組みが用意されています。

Node数が増えるに連れて大量のdocker pullが発生し、UpstreamのDocker registryに大きな負荷を与えます。初回の取得だけUpstreamから行ったら、そこから他のNodeに配布するというアプローチによって、全体的に大幅な帯域削減が可能になります。またP2Pによるデータセンター内配布は他の用途にも使える可能性があることを示唆しました。

f:id:cybozuinsideout:20190522063730j:plain

会場の様子・まとめ

今回は参加者7700人で去年のNorth Americaに近い混雑となっています。 会場の移動も時間を要しますし、疲労によってなかなか集中して聴けないセッションも出始めてきました。 また一つのTime slotで最大20セッションが同時に行われているため、目的を絞ったり、複数人で参加して分担して聴いて回る事が必要になってきます。

f:id:cybozuinsideout:20190522045255j:plain

f:id:cybozuinsideout:20190522073022j:plain

一方で世界的にKubernetesの需要が爆発的に増えているのがよくわかります。 コンテナオーケストレーションのデファクトスタンダードとなったのが改めて感じました。

f:id:cybozuinsideout:20190522045628j:plain

Kuberenetes projectは開始から5年が過ぎました。上のKeynoteでも触れていますが今のKubernetesは本番稼働として十分に安定しています。そして次は拡張性。毎年Kubernetesの目指す先が変わっていくので今後の成長も期待できると確信しています。