Upgrade to Pro — share decks privately, control downloads, hide ads and more …

COSI (Container Object Storage Interface) で広がる永続ストレージの世界 / CNDT2021 COSI

COSI (Container Object Storage Interface) で広がる永続ストレージの世界 / CNDT2021 COSI

既にKubernetesを使っている方は、多かれ少なかれオンデマンドにPersistent Volumeを使われていることでしょう。
本資料ではPersisten Volumeと同様にオブジェクトストレージを扱うための標準である、COSIのお話しをします。
Kubernetesでオブジェクトストレージのライフサイクルを管理することによって、ストレージの選択肢の広がりを感じましょう。

※デモ部分は資料にありません。

61e7dc2e84a1a1c4ac1a8e2c552fee07?s=128

Takuya Utsunomiya

November 01, 2021
Tweet

More Decks by Takuya Utsunomiya

Other Decks in Technology

Transcript

  1. #CNDT2021 COSI (Container Object Storage Interface) で広がる永続ストレージの世界 宇都宮 卓也 (うつぼ)

    レッドハット株式会社
  2. #CNDT2021 自己紹介 2 kind: HumanBeings metadata: name: 宇都宮 卓也 spec:

    group: レッドハット株式会社 title: ソリューションアーキテクト born: 大阪 age: 39歳 favorites: technology: [“ストレージ”,“OpenShift”] hobby: [“プロレス観戦”,“将棋”] drink: [“ビール”, “ワイン”] annoyance: [“最近目が霞む”, “肩が痛い”] @japan_rook Japan Rook https://rook.connpass.com/ Cloud Native Data Community https://cndata.connpass.com/ https://www.redhat.com/ja/resou rces/openshift-4-first-step-guide -step-to-enterprise-kubernetes- ebook
  3. #CNDT2021 ストレージ in Kubernetes

  4. #CNDT2021 Kubernetesにおけるストレージ • ユーザーアプリケーション ◦ Database ◦ Streaming/Messaging ...etc •

    運用系アプリケーション ◦ Observability系 ◦ 開発基盤系 ...etc 4 Kubernetesは永続的なストレージが必要 ・・・ Monitoring Logging Tracing Registry User Apps Ops Apps Persistent Storage Persistent Volume
  5. #CNDT2021 • 次の3つのリソースが重要な役割を担う。 ◦ Persistent Volume (PV) ◦ Persistent Volume

    Claim (PVC) ◦ Storage Class (SC) Persistent Volumeの仕組み 5 Storage Provisioner Storage Class Persistent Volume Namespace App Pod Persistent Volume Claim ストレージシステム ユーザー 論理ディスク (LUN, volume, directory等) PVC作成 (Storage Class指定) PVCから Trigger APIで命令 PV作成 PVC Bind 論理ディスク作成 Worker Node接続 Bind Mount
  6. #CNDT2021 COSIとは何?

  7. #CNDT2021 COSI = Container Object Storage Interface • 『コージー』と発音する。 •

    コンテナワークロードからオブジェクトストレージのライフサイクルを管理するため の、標準的なインターフェースである。 ◦ CSI(Container Storage Interface)のオブジェクトストレージ版 • https://container-object-storage-interface.github.io/ 7
  8. #CNDT2021 CSIがあるのになぜCOSIが要るの? • ブロック/ファイルストレージとオブジェクトストレージはかなり違うものである。 ◦ ファイルシステム vs Bucket/Container ◦ POSIX

    vs 各種API ◦ アクセスコントロール • CSIはブロック/ファイル向けで、オブジェクトストレージにはそぐわない。オブジェクト ストレージ用の標準があったほうがいい。 8
  9. #CNDT2021 9 ここからは2021/10/20時点の実装に沿ってお話しします

  10. #CNDT2021 コンポーネント (ざっくり) • Controller, Provisioner, Registrar, Adapter → Kubernetesで提供

    • COSI driver → ストレージベンダで提供 Worker node API Server csi- adapter driver- registrar provisioner- sidecar COSI driver controller Object Storage
  11. #CNDT2021 Custom Resource (1) 11 リソース 何のオブジェクト スコープ Bucket (B)

    オブジェクトストレージの論理領域自体 Cluster-wide BucketRequest (BR) Bucketの請求 Namespaced BucketClass (BC) バックエンドのオブジェクトストレージの種類 Cluster-wide • Bucket系 API Group : objectstorage.k8s.io
  12. #CNDT2021 Custom Resource (2) 12 リソース 何のオブジェクト スコープ BucketAccess (BA)

    BucketへのAccess Token/Service Account Cluster-wide BucketAccess Request (BAR) BucketAccessの請求 Namespaced BucketAccess Class (BAC) Bucketへのアクセスコントロールの種類 Cluster-wide • BucketAccess系 API Group : objectstorage.k8s.io
  13. #CNDT2021 BucketRequestからBucket作成までの(雑な)流れ 13 Provisioner Bucket Class Bucket App Namespace Bucket

    Request Object Storage ユーザー Bucket/Container BR作成 (BC指定) BRからTrigger API 作成 作成 Bind
  14. #CNDT2021 Provisioner Namespace BucketAccessRequestから BucketAccess作成までの(雑な)流れ 14 Bucket Access Class Bucket

    Access App Namespace Bucket Access Request Object Storage ユーザー Token BAR作成 (BAC指定) 作成 Bind Bucket Request BARから Trigger
  15. #CNDT2021 ちょっとやってみます

  16. #CNDT2021 NS: rook-ceph デモ環境 16 BucketClass BucketAccess NS: default BAR

    ... BR RGW MON OSD Tools(admin) NS: ceph-cosi-driver Provisioner BucketAccessClass Bucket
  17. #CNDT2021 COSIの今とこれから

  18. #CNDT2021 COSIのリリース 18 • pre-alpha ◦ k8s 1.23でalphaリリースを目指す。 https://github.com/kubernetes-sigs/container-object-st orage-interface-spec

    Kubernetes slack #sig-storage-cosi
  19. #CNDT2021 間に合うかな? 19 https://github.com/kubernetes/enhancements/pull/2813

  20. #CNDT2021 COSIは変わる 20 • リソース名 ◦ Bucket Access Request →

    Bucket Claim ?? ◦ Bucket Request → Bucket Claim ?? • NamespaceまたぎのBucket共有 ◦ Gateway APIのreferencePolicyを使った実装の予定。 • その他はKEPのreviewを参照 ◦ https://github.com/kubernetes/enhancements/pull/2813 • Alpha to Betaで手をつけることが多い。 ◦ specが大きく変わりそう。 ◦ 1.24でBetaリリースできるかな。
  21. #CNDT2021 まとめ 21 • オブジェクトストレージは今後も広く使われていくため、Kubernetesでオブジェクト ストレージのライフサイクル管理ができるようになるべきだ。 • CSIはオブジェクトストレージにそぐわないため新しい標準が必要で、それがCOSI。 • CSIとCOSIで、ブロック/ファイル/オブジェクト全てのストレージ標準インターフェー

    スができる。アプリケーションから見たストレージの選択肢がかなり広がる。 • まだまだ荒削りだけれど、COSIは来年から再来年にかけて盛り上がるでしょう!い や、盛り上げていきましょう!
  22. #CNDT2021 Thank you