Slide 1

Slide 1 text

@tzkb Rook v1.2の紹介 ~できること、できないこと~ 2020/1/10

Slide 2

Slide 2 text

2 最近やっていること • Cloud Native Days Tokyo 2019 “Cloud Native Storageが拓く Database on Kubernetesの未来” • Japan Rook Meetup #1 “Rook v1.1で新登場! YugaByteDBをさわってみる” + で色々と。

Slide 3

Slide 3 text

4 • そもそもRookって何? • で、Rookって何してくれるの? • なるほど、どんなときに使えるの? • 課題はないの? • 今、Rookを試す意味

Slide 4

Slide 4 text

5 今日のゴール

Slide 5

Slide 5 text

6 そもそもRookって何?

Slide 6

Slide 6 text

7 読み方問題 • ルーク or ルック? • お好きなほうでどうぞ。今回は“ルーク“で行きます。

Slide 7

Slide 7 text

8 Rookとは • マルチなストレージ・プロバイダに対応した、データストア・ オペレーター。 Storage Provider 種別 ステータス 概要 Ceph ストレージ Stable 分散ストレージ (Block/File/Object) Cockroach DB DB Alpha OSS版Spannerを目指す分散DB Minio ストレージ Alpha 簡素なオブジェクトストレージ EdgeFS ストレージ Stable Gitに似たGeoスケールのFS Cassandra KVS Alpha NoSQLの代表格、分散KVS NFS FS Alpha 共有ファイルシステム Yugabyte DB DB Alpha PostgreSQL互換の分散DB

Slide 8

Slide 8 text

9 AWSと比べると良く分かるかも? Storage Provider AWSでは 説明 Ceph EBS/EFS/S3 • Unified SDS Cockroach DB DynamoDB? Aurora? • 分散KVS上のRDB(postgres) Minio S3 • オブジェクトストレージ EdgeFS EBS/EFS/S3 • こちらもUnifiedなSDS Cassandra MCS • re;Invent2019で発表 NFS EFS • ファイルストレージ Yugabyte DB DynamoDB? Aurora? • 分散KVS上のRDB(postgres) • こうして見ると、Rookの競合はクラウドベンダーにも見える。

Slide 9

Slide 9 text

10 それぞれ詳しく知りたい人は • 2019年末のアドベントカレンダーがあるよ。

Slide 10

Slide 10 text

11 つまり、Rookとは は、自分で作ると大変な データストア(分散ストレージ/データベース) を、Kubernetes上に簡単に構築・ 運用できるようにするオペレーター だよ。

Slide 11

Slide 11 text

12 Rookってオンプレに向いてる? • Outpostsに蹴散らされそうな未来も少し見えたり。 対象サービス EC2 EBS ECS EKS EMR RDS ※preview (postgres,MySQL) EFSやDynamoDB等も来たら、 オンプレで基盤構築する物好き は居る? Cloud at Customer(by Oracle) は流行らなかったけど、今回は どうかな。

Slide 12

Slide 12 text

13 で、Rookって何をしてくれるの?

Slide 13

Slide 13 text

14 Cephの例:こんなクラスタを3コマンドで作ってくれる operator agent/discover agent/discover agent/discover osd osd osd mon mon mon CSI csi-provisioner csi-rbdplugin csi-rbdplugin csi-rbdplugin Rook • monとかosdとか普通は面倒なんです。

Slide 14

Slide 14 text

15 RookなしでCephクラスタを作ろうとしたら、 1. パッケージをダウンロードして、 2. 各ノード(例えば3台)にCephをインストールして、 3. MONプロセスを起動して、 4. Managerを起動して、 5. OSDプロセスを起動してクラスタに組み込んで、

Slide 15

Slide 15 text

16 Rookなら、Cephもらっく楽に構築! $ kubectl apply -f cluster/exsample/kubenetes/ceph/common.yaml $ kubectl apply -f cluster/exsample/kubenetes/ceph/operator.yaml $ kubectl apply -f cluster/exsample/kubenetes/ceph/cluster.yaml • たったの3コマンドを投入するだけ(当社調べ)。

Slide 16

Slide 16 text

17 分散SQLデータベース?Rookなら何とかしてくれる! yb-master yb-master yb-master rook yugabytedb operator yb-tserver yb-t-server yb-tserver • Spanner的なOSS、 も簡単に構築。

Slide 17

Slide 17 text

18 Rookなら、分散DBもらっく楽に構築! $ kubectl apply -f cluster/exsample/kubenetes/yugabytedb/operator.yaml $ kubectl apply -f cluster/exsample/kubenetes/yugabytedb/cluster.yaml • たった2コマンドを投入するだけ(2回目)。

Slide 18

Slide 18 text

19 つまり、Rookが何をしてくれるのかというと 【Cassandra】 【YugaByteDB】 【Ceph】 • K8sを分散データストアのプラットフォームにしてくれる。 osd mon osd mon osd mon osd osd mgr osd master master master t-server t-server t-server

Slide 19

Slide 19 text

20 なるほど、どんなときに使えるの?

Slide 20

Slide 20 text

21 今、Rookを使うならどういう用途か? 1. 何らかの理由で、Managedなサービスが使えないとき ① 開発環境、PoC ② オンプレミス/プライベートクラウド 2. パブリッククラウドの可用性に満足できないとき ① Multi-AZにEBSを使いたい 3. OpenShiftで ① OpenShift Container Storage 4

Slide 21

Slide 21 text

22 1.① 開発環境とかPoCで • コストがかかったり、クラウドの管理権限がなかったりで、 S3やEFSが使えない環境もある。 • EC2とEBSは使えるし、K8sクラスタ(EKSかも)はある。 nfs-operator nfs-provisoner minio-operator rook-nfs minio-store minio-store app-A app-A app-C S3互換IF GET/PUT NFS mount

Slide 22

Slide 22 text

23 1.② オンプレミス/プライベートクラウドで • ストレージがない(?)オンプレミス環境とか、オブジェクト・ ストレージが用意されてないプライベートクラウドとか。 • サーバ内蔵のDiskかき集めて、それっぽく使いたい。 osd osd osd mon mon mon osd mds csi-rbdplugin csi-rbdplugin csi-rbdplugin csi-rbdplugin csi-cephfsplugin csi-cephfsplugin csi-cephfsplugin csi-cephfsplugin CSI mds rgw rgw

Slide 23

Slide 23 text

25 • KubernetesとMulti-AZなノードでPodの可用性は確保できても、 EBSを使っているとデータが移動できない。 • Rookを使って、Multi-AZなブロックストレージを構築できる。 2.① クラウドの可用性に満足できない osd osd mon mon osd csi-rbdplugin csi-rbdplugin csi-rbdplugin CSI AZ-a AZ-b AZ-c

Slide 24

Slide 24 text

29 つまり、Rookの使いみちは Kubernetesクラスタはある、じゃあストレージはどうしよう? な場面で使ってみる。 1. 何らかの理由で、Managedなサービスが使えないとき 2. パブリッククラウドの可用性に満足できないとき 3. OpenShiftで

Slide 25

Slide 25 text

30 課題はないの?

Slide 26

Slide 26 text

31 課題1)Rookじゃなきゃ出来ないんだっけ? • オンプレミスもMulti-AZも他でも出来る。 • 例えば、NetApp Cloud Volume ONTAP+Trident。 app-A AZ-a AZ-b

Slide 27

Slide 27 text

32 課題2)今のKubernetes/Rookで大丈夫か? osd osd mon mon osd AZ-a AZ-b AZ-c • 正直、マルチIFは欲しい。Multusが拡まるか? • AZやNodeにポリシーに従って(良い感じに)配置して欲しい。 DB-1 DB-2 DB-3 サービスLAN ストレージLAN DB LAN