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

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

昨日に引き続きKubeConの現地レポートをいたします。本日はNecoが注目しているRookについてのセッションがたくさんありました。先日"Production Ready"と宣言されたv1.0.0がリリースされたことによって、その注目度の高さがますます上がっていることを感じます。

本記事ではRookについてのセッションの中から面白かったものについて紹介いたします。

f:id:cybozuinsideout:20190523103545j:plain
二日目の怒涛のRookセッションたち

Rookがどういうもので、かつ、前回KubeConであるKubeCon + CloudNativeCon North America 2018においてどういう状況だったかについては以下の記事をごらんください。

blog.cybozu.io

昨日の記事については以下の記事をごらんください。

blog.cybozu.io

Keynote: Debunking the Myth: Kubernetes Storage is Hard - Saad Ali, Senior Software Engineer, Google

sched.co

本セッションのテーマはKubernetesでストレージを扱うのは難しいというよく言われること(発表者に言わせると"神話")についてのものでした。

開幕早々彼は「Kubernetesのストレージが難しいのではない、ストレージが難しいのだ」と述べました。これには私はうなずくばかりでした。ストレージは本質的に複雑であって、Kubernetesはその複雑さのうちの一部を引き受けて楽にしてくれるだけであって、何も考えずに楽に使えるようにしてくれるわけではありません。これはKubernetesのストレージだけではなく、Kubernetesについても同じことが言えるとわたしは思っています。

続いて彼は複雑な問題にどう立ち向かうかについて述べました。その方法とは大きな問題を分割して複数の扱いやすい問題に落とし込むことです。ストレージについては次のように分割していました。

  • Select: どのストレージを使うのかの選定。オブジェクトストアやRBD、ファイルストレージ、およびブロックストレージなど
  • Deploy: ストレージをデプロイする
  • Integrate: ストレージをクラスタから使えるようにする
  • Consume: ストレージをクラスタから使う

SelectについてはとくにKubernetesは関係なく、自分でやるしかないんだというメッセージを発信していました。

最後は「ストレージは複雑である、Kubernetesはそれを扱いやすくする」という言葉で締めくくられました。本セッションはストレージに限らず、技術者が本質的に困難なことをツールのせいにして自己弁護をするのを戒める示唆に富んだ非常によいものでした。

Data Without Borders - Using Rook Storage Orchestration at a Global Scale - Jared Watts, Upbound

sched.co

本セッションはRookを使ってマルチサイトストレージをRookを使ってオーケストレートするというものでした。

Rookはさまざまなストレージプロバイダを扱えますが、本セッションの対象はマルチサイトで動くことを考慮しているCephCockroachDBEdgeFSについてのものでした。この後に彼はそれぞれについて簡単な紹介をしたうえで、マルチサイトのEdgeFSについて注目して話を進めました。

Rook自身は地理的に同じ場所に構築されたクラスタを扱うものであり、それらクラスタを管理するためのオーケストレータは依然必要です。このオーケストレータについて彼はKubefedCrossplaneを挙げてました。

セッションは次のようなデモで締められました。

  1. EKSを使って2つのサイトに仮想マシンを立ち上げる
  2. それぞれの上にRookを使って立ち上げたEdgeFSを使ってEdgeFSクラスタを作る

CLIのデモなのでひたすら地味なのですが、数個のYAMLを読み込むだけでマルチサイトなクラスタできる様子がわかって感心しました。

Deep Dive: Rook - Jared Watts & Bassam Tabbara, Upbound

sched.co

本セッションはRookについての詳しい情報を提供するというものです。

まずはApache Cassandraのストレージドライバについて紹介がありました。Cassandraの機能そのものの説明の後に、Cassandraのノード、ラック、データセンターといった概念をどのようにKubernetesのリソースにマップするかについて触れました。

現在のところRookを介してCassandraを使う場合は次のようなことができるとのことです。

  • クラスタの作成、ブートストラップ
  • オートスケール
  • 故障したノードを別のもので置き換える

最後には前述のセッションと同様EdgeFS、およびCrossplaneとRookを使ったマルチサイトストレージについて言及がありました。後者についてはRookを用いてCrossplaneの拡張をするという実装の話まで踏み込んでいました。前回までのKubeConではマルチサイトストレージに関する言及は無かったので、今後はこの領域にも注力するということなのでしょう。

なお、本セッションは超満員で、参加者が部屋の外にあふれ出すほどでした。去年のKubeConでRookに関するセッションはこれほどの混雑はまったくなかったので、Rookに対する注目度がどんどん高くなっていることがわかりました。

f:id:cybozuinsideout:20190523110117j:plain
本セッションの様子