2020/10/27のKubernetes Novice Tokyo#6のLT資料です。
@tzkbKubernetesでストレージ?そもそも何に使えるの?Kubernetes Novice Tokyo #6, 2020/10/27
View Slide
2最近やっていること• July Tech Festa 2020“理解して拡げる分散システムの基礎知識”• NewSQL関連のブログ投稿“2020年現在のNewSQLについて”“NewSQLコンポーネント詳解”+ =∞
31. PV/PVC、StorageClass、CSI、それ何に使うの?2. データベースから見たストレージ3. まとめアジェンダ
4PV/PVC、StorageClass、CSI、それ何に使うの?1
5Terminology• PV (Persistent Volume) / PVC (Persistent Volume Claim)• StorageClass• CSI (Container Storage Interface)• それは分かったけど、いつ・どういう時に使うの?
6なんかデータが消えたら困る時でしょ?• StatefulSet+PVで動かす仕組み(Operator)はたくさんある。
7(参考)Redis Operator• Redisのレプリカ数は6、それぞれPVを持った構成。※ https://amadeusitgroup.github.io/Redis-Operator/
8消えたら困ると言えば、データベースですよね?• 様々なDBがコンテナで、K8sで動かせる時代になりつつある。プロプライエタリ OSS(RDB) OSS(NoSQL)
9(参考)Kubernetes Native Testbed• ステートフルなミドルウェアをKubernetes上にてんこ盛り。※ https://github.com/kubernetes-native-testbed/kubernetes-native-testbed
10データベースから見たストレージ2
11Kubernetesが持つ永続化の仕組み(PostgreSQLを例に)• DBをKubernetes上で動かすには、下図のように永続化が必要。• StatefulSet– 一意に特定可能なネットワークアドレス、順次処理できるdeployなどを提供。• Persistent Volume– PV/PVCを用いて、データを永続化する。• この図ではノードローカルなボリュームを使っているため、データの冗長性が確保されていない。
12クラウドストレージとCSIを使うAWS EBS CSI Driver• EBSもCSIを利用することで動的にプロビジョニングが可能となっている。• データはノード障害でも失われないため、EBSをアタッチすれば新しいノードでDBを復旧可能となる。• データ保護にはクラウドストレージが最適。
13オンプレミスとCSIでも出来るクラウド・ストレージの変わりに、既設ハードウェアをそのまま使えるケースがある。• 下記の製品は自社ストレージをコンテナ・Kubernetesから利用可能とする仕組みを提供。– NetApp Trident– Pure Storage PSO既設のストレージ• ストレージベンダでCSI対応を進めており、同じように利用可能。
14DBでデータをレプリカする仕組みoperator-0 -1 -2postgres snapshot• ノード障害に備え、DBでレプリケーションを行う方法がある。• Crunchy Data、Zalandoなどが提供しているPostgreSQLOperatorではStreamingReplicationを用いて、Pod間でデータをレプリカする。• このケースではローカルボリュームを利用していても、データの冗長性が保たれる。• この場合もクラウドストレージを使えば、更に安心。AWS EBS CSI Driver
15もちろんクラウドやオンプレHWだけじゃない名称 バックエンド ブロック? OSS/Proprietary◎ OSSLonghorn -◎ OSS◎ OSSRedhat OpenShiftContainer Storage◎ Proprietary• コンテナNativeなSDSもCSI経由で利用が可能。
16まとめ3
17ここまでのまとめ 「Kubernetesのストレージ、完全に理解した」方、次はデータベースに進みましょう。 データベースを動かすには、データの冗長性・安全性は必須要件です。 「データはどこにあるのか?」「冗長化されているのか?」 ※バックアップもを意識して、Kubernetesでもストレージをどんどん使っていきましょう。