Introduction to PMEM-CSI for Kubernetes
Note: This is Alpha code and not production ready.
Intel PMEM-CSI is a CSI storage driver for container orchestrators like Kubernetes. It makes local persistent memory (PMEM) available as a filesystem volume to container applications. It can currently utilize non-volatile memory devices that can be controlled via the libndctl utility library. In this readme, we use persistent memory to refer to a non-volatile dual in-line memory module (NVDIMM).
The v1.1 release is the latest feature release and is regularly updated with newer base images and bug fixes. Older releases are no longer supported.
Documentation is part of the source code for each release and also available in rendered form for easier reading:
Supported Kubernetes versions
PMEM-CSI implements the CSI specification version 1.x, which is only supported by Kubernetes versions >= v1.13. The following table summarizes the status of support for PMEM-CSI on different Kubernetes versions:
Kubernetes version | Required alpha feature gates | Support status |
---|---|---|
1.13 | CSINodeInfo, CSIDriverRegistry, CSIBlockVolume |
unsupported 1 |
1.14 | unsupported 2 | |
1.15 | CSIInlineVolume | |
1.16 | ||
1.17 | ||
1.18 |
1 Several relevant features are only available in alpha
quality in Kubernetes 1.13 and the combination of skip attach and
block volumes is completely broken, with the
fix only being
available in later versions. The external-provisioner v1.0.1 for
Kubernetes 1.13 lacks the --strict-topology
flag and therefore late
binding is unreliable. It’s also a release that is not supported
officially by upstream anymore.
2 Lacks support for ephemeral inline volumes. Not supported officially by upstream anymore.
Demo
Click the image to watch the animated demo on asciinema.org:
License
All of the source code required to build PMEM-CSI is available under
Open Source licenses. The source code files identify external Go
modules used. Binaries are distributed as container images on
DockerHub. Those images contain license texts under
/usr/local/share/package-licenses
and source code under
/usr/local/share/package-sources
.