- In the past, Kubernetes only worked with
docker. This was built into the Kubernetes source code.
- Other container runtimes then appeared, such as
rkt and cri-o.
- CRI Standard is set how to define an orchestration solution like Kubernetes, would communicate with Container Runtimes such as
docker.
- If a new CRI interface is created, can be easily slotted into Kubernetes without having to implement it into the Kubernetes source code.
- To extend support for different networking solutions, the Container Network Interface was introduced.
- Networking vendors can create a plugin and make use of CSI.
- Vendors include
Weaveworks, Flannel and Cilium
- Storage also includes the following:
- portworx
- Amazon EBS
- Azure Disk
- DELL EMC Isilon
- GlusterFS
- PowerMax
- Unity
- XtremIO
- NetApp
- Nutanix
- HPE
- Hitachi
- Pure Storage
- CSI, vendors can write your own drivers.
- CSI is not a Kubernetes-specific standard.
- Meant to be a universal standard.
- Allows any container orchestration tool to work with any storage vendor and supported plugin.
- These vendors include:
- Kubernetes
- Cloud Foundry
- Mesos
- On the Kubernetes / Cloud Foundry / Mesos side, these should do this:
- SHOULD call to provision a new volume.
- SHOULD call to delete a volume.
- SHOULD call to place a workload that uses the volume onto a node.
- On the storage side of the house:
- SHOULD provision a new volume on the storage.
- SHOULD decommission a volume.
- SHOULD make the volume available on a node.
- Defines a set of RPCs (Remote Procedure Calls)
- These are called by the Container Orchestrator.
- Must be implemented by the storage driver.
- For example. the CSI says when a pod is created, it needs a volume.
- Therefore this calls Kubernetes and passes details such as the volume name,
- The storage driver then needs to implement the RPC, handle the request and provision a new volume on the storage array.
- The results of the operation are returned.
- Similarly with the delete volume RPC
- Storage driver should implement the code, to decommission the volume from the array.
- More information on the CSI can be found here: https://github.com/container-storage-interface/spec