Abstract
Kubernetes is the most popular container orchestration system for automating deployment, scaling, and management of containerized applications. Container Storage Interface(CSI) defines an industry standard that enables storage vendors to develop storage plugin that works for container orchestration systems. Kubernetes has well CSI support. Legacy In-Tree storage drivers are deprecated. Storage vendors are encouraged to develop their own CSI compatible storage plugins to integrate with Kubernetes. Storage Performance Development Kit (SPDK) provides a full block stack at user space with much higher performance than traditional kernel stack. SPDK also provides NVMe-oF, iSCSI servers that are capable of serving disks over the network, which is a perfect fit for cloud environment. We started open source project SPDK-CSI (https://github.com/spdk/spdk-csi) to enable SPDK as storage provider of Kubernetes. It provisions SPDK backed volumes dynamically and enables Pods to access SPDK storage through NVMe-oF or iSCSI transparently. In this talk, we will share our work of developing SPDK-CSI plugin and introduce CSI internals, SPDK-CSI detailed design and coding practice, CSI deployment and validation, SPDK JSON RPC, etc. These knowledge can be useful for those who are interested in Kubernetes CSI plugin development, or want to leverage SPDK to provide high performance containerized storage solution in Kubernetes.
Learning Objectives
Develop a Kubernetes CSI plugin from scratch,How Kubernetes storage and CSI works,How to use SPDK JSON RPC programming interface,How to deploy and validate Kubernetes CSI plugin