Michelle Au
Software Engineer, Google
Kubernetes SIG-Storage
Kubernetes and
Container Storage
Interface Update
Agenda
Background on CSI
What’s New in Kubernetes?
Future
Getting Involved
Background
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
Vendor Benefits
Write one driver that works across multiple orchestrators
Develop outside of Kubernetes core
- Independent release cycle
- Could be closed source
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!
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
Kubernetes Integration
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
What’s New?
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
Kubernetes 1.14
Features promoted to beta
- Raw block
- Topology
New alpha features
- Resizing
- Migration of in-tree plugins
Future
Kubernetes 1.15 and Beyond
New alpha features
- Ephemeral volumes
- Group snapshots
- Application snapshots
- Volume cloning
- Windows OS
Driver Management
New challenges:
- Versioning
- Backwards compatibility
- Upgrade/downgrade
Kubernetes distros can pre-package/manage qualified drivers
Getting Involved
Kubernetes SIG-Storage
Bi-weekly meetings
- https://github.com/kubernetes/community/tree/master/sig-storage
Slack
- #sig-storage on kubernetes.slack.com
Me
- Github/Slack: msau42
- Twitter: _msau42_
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”
Questions?
[Extra]
Driver Deployment
Architecture
Deployment Architecture
[Extra]
Vendor Resources
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!
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
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

DCSF 19 Kubernetes and Container Storage Interface Update

  • 1.
    Michelle Au Software Engineer,Google Kubernetes SIG-Storage Kubernetes and Container Storage Interface Update
  • 2.
    Agenda Background on CSI What’sNew in Kubernetes? Future Getting Involved
  • 3.
  • 4.
    What is CSI? Specificationfor 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
  • 5.
    Vendor Benefits Write onedriver that works across multiple orchestrators Develop outside of Kubernetes core - Independent release cycle - Could be closed source
  • 6.
    Kubernetes Benefits Vendor codedoes 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!
  • 7.
    End User Benefits Largeecosystem 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
  • 8.
  • 9.
    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
  • 10.
  • 11.
    Kubernetes 1.13 Basic CSIsupport is GA - Dynamic provisioning, attaching, mounting - 1.0 spec added, 0.3 spec deprecated Existing alpha features - Snapshots - Raw block - Topology
  • 12.
    Kubernetes 1.14 Features promotedto beta - Raw block - Topology New alpha features - Resizing - Migration of in-tree plugins
  • 13.
  • 14.
    Kubernetes 1.15 andBeyond New alpha features - Ephemeral volumes - Group snapshots - Application snapshots - Volume cloning - Windows OS
  • 15.
    Driver Management New challenges: -Versioning - Backwards compatibility - Upgrade/downgrade Kubernetes distros can pre-package/manage qualified drivers
  • 16.
  • 17.
    Kubernetes SIG-Storage Bi-weekly meetings -https://github.com/kubernetes/community/tree/master/sig-storage Slack - #sig-storage on kubernetes.slack.com Me - Github/Slack: msau42 - Twitter: _msau42_
  • 18.
    First Time Contributions Improvetest 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”
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    Writing a CSIPlugin Developer docs - https://kubernetes-csi.github.io/docs/ Hostpath sample plugin - https://github.com/kubernetes-csi/csi-driver-host-path - Not for production!
  • 24.
    CSI Spec Testing Validatethat your CSI plugin conforms to the CSI spec - csi-sanity test suite - https://github.com/kubernetes-csi/csi-test/tree/master/pkg/sanity
  • 25.
    Kubernetes Testing Run KubernetesE2E 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