The Container Storage Interface (CSI) is an initiative to standardize the interaction between container orchestrators and storage providers. It is driven by Kubernetes, Docker, Mesos, and Cloud Foundry. The idea is that storage providers will need to implement just one plugin and container orchestrators will only need to support CSI. It is the equivalent of CNI for storage. There are several advantages over FlexVolume:
- CSI is an industry-wide standard
- FlexVolume plugins require access to the node and master root filesystem to deploy derivers
- FlexVolume storage drivers often require many external dependencies
- FlexVolume's EXEC style interface is clunky
A CSI volume plugin was added in Kubernetes 1.9 as an alpha feature and already moved to beta status in Kubernetes 1.10. FlexVolume will remain for backwards compatibility, at least for a while...