BeeGFS CSI Driver
Contents
Overview
The BeeGFS Container Storage Interface (CSI) driver provides high performing and
scalable storage for workloads running in container orchestrators like
Kubernetes. This driver allows containers to access existing datasets or request
on-demand ephemeral or persistent high speed storage backed by BeeGFS parallel
file systems.
The driver can be easily deployed using the provided Kubernetes manifests. Optionally the
BeeGFS CSI Driver Operator can be used to automate day-1 (install/
configure) and day-2 (reconfigure/update) tasks for the driver. This especially simplifies
discovery and installation from Operator Lifecycle Manger (OLM) enabled clusters like Red Hat
OpenShift.
Notable Features
- Integration of Storage Classes in Kubernetes with storage
pools in
BeeGFS, allowing different tiers of storage within the same file system to be
exposed to end users.
- Management of global and node specific BeeGFS client configuration applied to
Kubernetes nodes, simplifying use in large environments.
- Specify permissions in BeeGFS from Storage Classes in Kubernetes simplifying
integration with BeeGFS quotas
and providing visibility and control over user consumption
of the shared file system.
- Set striping
parameters in
BeeGFS from Storage Classes in Kubernetes to optimize for diverse workloads
sharing the same file system.
- Support for ReadWriteOnce, ReadOnlyMany, and ReadWriteMany access
modes
in Kubernetes allow workloads distributed across multiple Kubernetes nodes to
share access to the same working directories and enable multi-user/application
access to common datasets.
Interoperability and CSI Feature Matrix
| beegfs.csi.netapp.com |
K8s Versions |
Red Hat OpenShift Versions |
BeeGFS Versions |
CSI Version |
| v1.0.0 |
1.19 |
|
7.2, 7.1.5 |
v1.3.0 |
| v1.1.0 |
1.18, 1.19, 1.20 |
|
7.2.1, 7.1.5 |
v1.3.0 |
| v1.2.0 |
1.18, 1.19, 1.20, 1.21 |
4.8 |
7.2.4, 7.1.5 |
v1.5.0 |
The following CSI features are supported by all versions of the driver:
- Access Modes: Read/Write Multiple Pods
- Dynamic Provisioning: Yes
- Persistence: Yes
Additional Notes:
- This matrix indicates tested BeeGFS and Kubernetes versions. The driver
may work with other versions of Kubernetes, but they have not been tested.
Changes to the deployment manifests are likely required, especially for
earlier versions of Kubernetes.
- The driver has not been tested with SELinux.
- For environments where the driver is used with both BeeGFS 7.1.x and
7.2.x, Kubernetes nodes should have the 7.2 BeeGFS DKMS client installed.
Getting Started
Prerequisite(s)
- Deploying the driver requires access to a terminal with kubectl.
- The BeeGFS DKMS
client must be
preinstalled to each Kubernetes node that needs BeeGFS access.
- Note: As part of this setup the beegfs-helperd and beegfs-utils packages must
be installed, and the
beegfs-helperd service must be started and enabled.
- Each BeeGFS mount point uses an ephemeral UDP port. On Linux the selected
ephemeral port is constrained by the values of IP
variables.
Ensure that firewalls allow UDP
traffic
between BeeGFS management/metadata/storage nodes and ephemeral ports on
Kubernetes nodes.
- One or more existing BeeGFS file systems should be available to the Kubernetes
nodes over a TCP/IP and/or RDMA (InfiniBand/RoCE) capable network (not
required to deploy the driver).
Quick Start
The steps in this section allow you to get the driver up and running quickly.
For production use cases or air-gapped environments it is recommended to read
through the full kubectl deployment guide or operator
deployment guide.
- On a machine with kubectl and access to the Kubernetes cluster where you want
to deploy the BeeGFS CSI driver clone this repository:
git clone https://github.com/NetApp/beegfs-csi-driver.git
- Change to the BeeGFS CSI driver directory (
cd beegfs-csi-driver) and run:
kubectl apply -k deploy/k8s/overlays/default
- Note by default the beegfs-csi-driver image will be pulled from
DockerHub.
- Verify all components are installed and operational:
kubectl get pods -n kube-system | grep csi-beegfs
As a one-liner: git clone https://github.com/NetApp/beegfs-csi-driver.git && cd beegfs-csi-driver && kubectl apply -k deploy/k8s/overlays/default && kubectl get pods -n kube-system | grep csi-beegfs
Provided all Pods are running the driver is now ready for use. See the following
sections for how to get started using the driver.
Basic Use
This section provides a quick summary of basic driver use and functionality.
Please see the full usage documentation for a complete
overview of all available functionality. The driver was designed to support
both dynamic and static storage provisioning and allows directories in BeeGFS
to be used as Persistent
Volumes (PVs)
in Kubernetes. Pods with Persistent Volume Claims (PVCs) are only able to
see/access the specified directory (and any subdirectories), providing
isolation between multiple applications and users using the same BeeGFS file
system when desired.
Dynamic Storage Provisioning:
Administrators create a Storage Class in Kubernetes referencing at minimum a
specific BeeGFS file system and parent directory within that file system. Users
can then submit PVCs against the Storage Class, and are provided isolated access
to new directories under the parent specified in the Storage Class.
Static Provisioning:
Administrators create a PV and PVC representing an existing directory in a
BeeGFS file system. This is useful for exposing some existing dataset or shared
directory to Kubernetes users and applications.
Examples
Example Kubernetes manifests of how to use the driver are
provided. These are meant to be repurposed to simplify creating objects related
to the driver including Storage Classes, Persistent Volumes, and Persistent
Volume Claims in your environment.
Requesting Enhancements and Reporting Issues
If you have any questions, feature requests, or would like to report an issue
please submit them at https://github.com/NetApp/beegfs-csi-driver/issues.
Contributing to the Project
The BeeGFS CSI Driver maintainers welcome improvements from the BeeGFS and
open source community! Please see CONTRIBUTING.md for how
to get started.
License
Apache License 2.0
Maintainers
- Eric Weber (@ejweber).
- Jason Eastburn
- Joe McCormick (@iamjoemccormick).
- Joey Parnell (@unwieldy0).
- Justin Bostian (@jb5n).