Skip to content

Persistent Memory Container Storage Interface Driver

License

Notifications You must be signed in to change notification settings

intelkevinputnam/pmem-csi

 
 

Repository files navigation

Introduction to PMEM-CSI for Kubernetes

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 v0.7.0 release is the latest feature release and is regularly updated with newer base images and bug fixes. Older versions are no longer supported.

v0.8.0 is in preparation.

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 unsupported 3
1.16 unsupported 4
1.17 supported
1.18 supported
1.19 supported

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.

3 Not supported officially by upstream anymore.

4 No longer supported by current external-provisioner 2.0.0 because support for the v1beta CSI APIs was removed. Also not supported officially by upstream anymore.

Feature status

PMEM-CSI is under active development. New features get added continuously and old features may get removed. To minimize the impact of feature changes on production usage, the project is using the following approach:

  • New features are considered alpha while their API and usage are still under discussion.
  • Stable features are supported and tested across up- and downgrades between all supported PMEM-CSI releases. Whether a release is still supported is documented in the release notes.
  • Alpha features may get removed at any time. Stable features will be marked as deprecated first and then may get removed after half a year. Deprecations are announced in the release notes of the release which deprecates the feature.

The following table lists the features that are stable:

Feature Introduced in
LVM mode v0.5.0
Direct mode v0.5.0
Persistent volumes v0.5.0
CSI Ephemeral volumes v0.6.0
Raw block volumes v0.6.0
Capacity-aware pod scheduling v0.7.0

Release notes are prepared only for major new releases (like v0.6.0) but not for automatic updates (like v0.6.1). For more information on releases, see release management.

Demo

Click the image to watch the animated demo on asciinema.org:

asciicast

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.

Content

About

Persistent Memory Container Storage Interface Driver

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 85.1%
  • Shell 10.3%
  • Makefile 3.4%
  • Other 1.2%