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

Introduction to Container Storage Interface - CSI

Introduction to Container Storage Interface - CSI

What is Container Storage Interface (CSI) ?
Challenges with existing Storage Interfaces
CSI : Goals

Velotio Technologies

December 05, 2019
Tweet

More Decks by Velotio Technologies

Other Decks in Technology

Transcript

  1. What is Container Storage Interface (CSI) ? • an initiative

    to unify the storage interface of Container Orchestrator Systems (COs) like Kubernetes, Mesos etc. combined with storage vendors like Ceph, Portworx, NetApp etc. • a single CSI for a storage vendor is guaranteed to work with all COs.
  2. Challenges with existing Storage Interfaces • CLI-based interface • Lack

    of idempotency on APIs • In-tree Interface • Tightly coupled with an implementation • Too Heavyweight.
  3. CSI : Goals • Interoperability • Vendor Neutral • Focus

    on Specification • Control Plane Only • Keep It Simple !
  4. CSI Plugins: Design Considerations • Out of tree plugins •

    All Functionality is implemented as a service • Segregation between Controller and Node Services. • Idempotency • Wire protocol: gRPC • Synchronous APIs.
  5. Ref: https://medium.com/google-cloud/understanding-the-container-storage-interface-csi-ddbeb966a3b 3rd Party External Components 3 major sub-components: •

    CSI Identity : is mainly for identifying the plugin service, making sure it’s healthy, and returning basic information about the plugin itself. • CSI Controller : is responsible of controlling and managing the volumes, such as: creating, deleting, attaching/detaching, snapshotting, etc. • CSI Node: is responsible for controlling volume’s action in the Kubernetes node.
  6. Packaging and Deploying a CSI Driver • Create a “CSI

    volume driver” container that implements the volume plugin behavior and exposes a gRPC interface via a unix domain socket, as defined in the CSI spec (including Controller, Node, and Identity services). • Bundle the “CSI volume driver” container with helper containers (external-attacher, external-provisioner, node-driver-registrar, cluster-driver-registrar, external-resizer, external-snapshotter, livenessprobe) • These helper containers will assist the “CSI volume driver” container in interacting with the Kubernetes system. • Deploy the above as DaemonSets, StatefulSets to enable the storage provider in your Kubernetes Cluster.
  7. References & Examples • Understanding the Container Storage Interface (CSI)

    : https://medium.com/google-cloud/understanding-the-container-storage-interface-csi-ddbeb966a3b • Container Storage Interface: Present and Future - Jie Yu, Mesosphere, Inc: https://kccnceu18.sched.com/event/Dqvo/container-storage-interface-present-and-future-jie-yu-mesosph ere-inc-intermediate-skill-level-slides-attached • Using Container Storage Interface (CSI) in IBM Cloud Private: https://medium.com/ibm-cloud/using-csi-in-ibm-cloud-private-5212d6bf2ae3 • CSI Design Doc: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/container- storage-interface.md#cluster-level-deployment • CSI Git Repo: https://github.com/kubernetes-csi • Example CSI Drivers: https://github.com/kubernetes-csi/drivers
  8. Conclusion • In this talk we learnt the following: •

    Need and Importance of CSI • Design Considerations for Plugin • Architecture, Components • Packaging & Deploying a CSI Driver • References & Examples