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でオブジェクトストレージのライフサイクルを管理することによって、ストレージの選択肢の広がりを感じましょう。

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

Takuya Utsunomiya

November 01, 2021
Tweet

More Decks by Takuya Utsunomiya

Other Decks in Technology

Transcript

  1. #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
  2. #CNDT2021 Kubernetesにおけるストレージ • ユーザーアプリケーション ◦ Database ◦ Streaming/Messaging ...etc •

    運用系アプリケーション ◦ Observability系 ◦ 開発基盤系 ...etc 4 Kubernetesは永続的なストレージが必要 ・・・ Monitoring Logging Tracing Registry User Apps Ops Apps Persistent Storage Persistent Volume
  3. #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
  4. #CNDT2021 COSI = Container Object Storage Interface • 『コージー』と発音する。 •

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

    vs 各種API ◦ アクセスコントロール • CSIはブロック/ファイル向けで、オブジェクトストレージにはそぐわない。オブジェクト ストレージ用の標準があったほうがいい。 8
  6. #CNDT2021 コンポーネント (ざっくり) • Controller, Provisioner, Registrar, Adapter → Kubernetesで提供

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

    オブジェクトストレージの論理領域自体 Cluster-wide BucketRequest (BR) Bucketの請求 Namespaced BucketClass (BC) バックエンドのオブジェクトストレージの種類 Cluster-wide • Bucket系 API Group : objectstorage.k8s.io
  8. #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
  9. #CNDT2021 BucketRequestからBucket作成までの(雑な)流れ 13 Provisioner Bucket Class Bucket App Namespace Bucket

    Request Object Storage ユーザー Bucket/Container BR作成 (BC指定) BRからTrigger API 作成 作成 Bind
  10. #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
  11. #CNDT2021 NS: rook-ceph デモ環境 16 BucketClass BucketAccess NS: default BAR

    ... BR RGW MON OSD Tools(admin) NS: ceph-cosi-driver Provisioner BucketAccessClass Bucket
  12. #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リリースできるかな。