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

2019 DockerCon: Kubernetes and CSI Update

2019 DockerCon: Kubernetes and CSI Update

Overview of CSI, what is supported in Kubernetes, and what we plan to add in the future.

Michelle Au

May 02, 2019
Tweet

More Decks by Michelle Au

Other Decks in Technology

Transcript

  1. What is CSI? Specification for orchestrating control plane operations on

    file and block storage - https://github.com/container-storage-interface/spec - Create and delete - Attach and detach - Mount and unmount - Snapshot and restore Industry standard supported by multiple container orchestrators - Kubernetes - Mesos - Cloud Foundry
  2. Vendor Benefits Write one driver that works across multiple orchestrators

    Develop outside of Kubernetes core - Independent release cycle - Could be closed source
  3. Kubernetes Benefits Vendor code does not need to be imported

    into core repository Vendor code cannot crash core Kubernetes components Core maintainers don’t need to review vendor code - More time to develop core features!
  4. End User Benefits Large ecosystem of CSI drivers available -

    https://kubernetes-csi.github.io/docs/drivers.html - Over 35! Get bug fixes and new features faster without upgrading your Kubernetes cluster
  5. apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-disk spec: storageClassName: fast-storage

    accessModes: - ReadWriteOnce resources: requests: storage: 100Gi Kubernetes API apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-storage provisioner: csi-driver.example.com parameters: foo1: bar1 foo2: bar2
  6. Kubernetes 1.13 Basic CSI support is GA - Dynamic provisioning,

    attaching, mounting - 1.0 spec added, 0.3 spec deprecated Existing alpha features - Snapshots - Raw block - Topology
  7. Kubernetes 1.14 Features promoted to beta - Raw block -

    Topology New alpha features - Resizing - Migration of in-tree plugins
  8. Kubernetes 1.15 and Beyond New alpha features - Ephemeral volumes

    - Group snapshots - Application snapshots - Volume cloning - Windows OS
  9. Driver Management New challenges: - Versioning - Backwards compatibility -

    Upgrade/downgrade Kubernetes distros can pre-package/manage qualified drivers
  10. First Time Contributions Improve test coverage - Raw block -

    Resizing - Snapshots - Topology Fixing bugs - Look for issues with “help wanted” label - https://github.com/kubernetes-csi - https://github.com/kubernetes/kubernetes - Filter by label “sig/storage”
  11. Writing a CSI Plugin Developer docs - https://kubernetes-csi.github.io/docs/ Hostpath sample

    plugin - https://github.com/kubernetes-csi/csi-driver-host-path - Not for production!
  12. CSI Spec Testing Validate that your CSI plugin conforms to

    the CSI spec - csi-sanity test suite - https://github.com/kubernetes-csi/csi-test/tree/master/pkg/sanity
  13. Kubernetes Testing Run Kubernetes E2E tests against any CSI driver

    - https://github.com/kubernetes/kubernetes/tree/master/test/e2e/ storage/external - Prereq: K8s cluster with CSI driver already installed - Future: CSI driver qualification/conformance