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

Implementing Container Storage Interface (CSI) for MooseFS

Implementing Container Storage Interface (CSI) for MooseFS

- Go through introductions of kubernetes, MooseFS, Container Storage Interface (CSI).
- How container storage interface works in a nutshell and also deep-dive.
- Moosefs-csi implementation: https://github.com/moosefs/moosefs-csi

Anoop Vijayan Maniankara

December 03, 2018
Tweet

More Decks by Anoop Vijayan Maniankara

Other Decks in Technology

Transcript

  1. 2008–2018 © Tuxera Inc. All Rights Reserved. Container Storage Interface

    - CSI Anoop Vijayan Maniankara Tuxera Inc. @maniankara 2
  2. 2008–2018 © Tuxera Inc. All Rights Reserved. • Introduction •

    Stateless nature of containers – need for persistence • Introduction to MooseFS • Types of storages available (in-tree, CSI etc.) • How CSI works • MooseFS CSI
  3. 2008–2018 © Tuxera Inc. All Rights Reserved. Anoop Vijayan 14+

    years experience in designing, developing, testing Continuous Integration systems in bigger enterprises to small companies DevOps lead at Tuxera Inc. @maniankara Github, stackoverflow, etc.
  4. 2008–2018 © Tuxera Inc. All Rights Reserved. Stop ! •

    Weren’t you supposed to talk about storage in kubernetes?
  5. 2008–2018 © Tuxera Inc. All Rights Reserved. • A fault

    tolerant distributed file system MooseFS
  6. 2008–2018 © Tuxera Inc. All Rights Reserved. • Commonly known

    as network file systems (uses network to send data) Distributed file system – Sample cluster 1TB 1TB 1TB Cluster – 4TB 1TB
  7. 2008–2018 © Tuxera Inc. All Rights Reserved. • Some interesting

    facts: – Storage size is up to: 264 Bytes = 16 EiB = 16 384 PiB – Single file size is up to: 257 Bytes = 128 PiB – Number of files is up to: 231 ~ 2.1 billion – Number of active clients is unlimited (depends on number of file descriptors in the system) MooseFS
  8. 2008–2018 © Tuxera Inc. All Rights Reserved. • Fast READ:

    – Fetching file fragments in parallel • Concurrent WRITE MooseFS – Read/Write 1TB 1TB 1TB MooseFS – 4TB 1TB
  9. 2008–2018 © Tuxera Inc. All Rights Reserved. • Vendor angnostic

    MooseFS – Hybrid cloud storage GCE PD AWS EBS Azure MD MooseFS – Hybrid mode Portworx
  10. 2008–2018 © Tuxera Inc. All Rights Reserved. • In-tree volume

    plugin • Out-of-tree Flex volume plugin • Out-of-tree Container Storage Interface driver Kubernetes storage/volumes – Options
  11. 2008–2018 © Tuxera Inc. All Rights Reserved. • In-tree volume

    plugin: Are built, linked, compiled, and shipped with the core Kubernetes binaries and extend the core Kubernetes API Kubernetes storage/volumes – In-tree volume plugin Src: https://github.com/kubernetes/kubernetes/tree/master/pkg/volume
  12. 2008–2018 © Tuxera Inc. All Rights Reserved. • Drawbacks –

    Tightly coupled with Kubernetes • Releases, forced changes etc. Kubernetes storage/volumes – In-tree volume plugin Src: https://github.com/kubernetes/kubernetes/tree/master/pkg/volume
  13. 2008–2018 © Tuxera Inc. All Rights Reserved. • Write your

    own driver and install it in all nodes • Driver invocation model: – <driver executable> init – <driver executable> attach/detach <json/mount options/device> <node name> – <driver executable> mount/mountdevice <mountdir> <mount dir/device> <json options> – <driver executable> unmount/unmountdevice <mount dir/device> Kubernetes storage/volumes – Flex volumes Flex volume specification: https://github.com/kubernetes/community/blob/master/contributors/devel/flexvolume.md
  14. 2008–2018 © Tuxera Inc. All Rights Reserved. • Drawbacks –

    Difficulty with deployments • Compatibility issues Kubernetes storage/volumes – Flex volumes Flex volume specification: https://github.com/kubernetes/community/blob/master/contributors/devel/flexvolume.md
  15. 2008–2018 © Tuxera Inc. All Rights Reserved. Kubernetes storage/volumes –

    before CSI Container Orchestrators EBS GCE PD Ceph Portworx MooseFS Storage Providers … … MooseFS
  16. 2008–2018 © Tuxera Inc. All Rights Reserved. Kubernetes storage/volumes –

    CSI Container Orchestrators Pluggable Storage Interface EBS GCE PD Ceph Portworx MooseFS Storage Providers … … MooseFS
  17. 2008–2018 © Tuxera Inc. All Rights Reserved. CSI release timeline

    Image courtesy: https://schd.ws/hosted_files/kccnceu18/fb/CloudNativeCon%20EU%202018%20CSI%20Jie%20Yu.pdf
  18. 2008–2018 © Tuxera Inc. All Rights Reserved. CSI release timeline

    – continued.. • v0.3.0 – 04.06.2018 • v1.0.0 – 15.11.2018 Kubernetes CSI: https://kubernetes-csi.github.io/docs/
  19. 2008–2018 © Tuxera Inc. All Rights Reserved. How CSI works

    in a nutshell - External component by Kubernetes core team <<pvc/workload>> CreateVolume(..), DeleteVolume(..), … ControllerPublishVolume(..), ControllerUnPublishVolume(..), … NodeStageVolume(..), NodePublishVolume(..), … <<gRPC>>
  20. 2008–2018 © Tuxera Inc. All Rights Reserved. How CSI works

    in a nutshell - External component by Kubernetes core team <<pvc/workload>> - 3rd party component by storage vendor
  21. 2008–2018 © Tuxera Inc. All Rights Reserved. External component (Kubernetes

    Team) External provisioner Driver registrar External attacher External component (3rd party) CSI Node CSI Controller CSI Identity Kubernetes core Node Kubelet Node Kubelet Master Kubernetes cluster with CSI External storage (AWS EBS, GCE PD,…)