All Projects → NetApp → beegfs-csi-driver

NetApp / beegfs-csi-driver

Licence: Apache-2.0 license
The BeeGFS Container Storage Interface (CSI) driver provides high performing and scalable storage for workloads running in Kubernetes.

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects
HCL
1544 projects
python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to beegfs-csi-driver

jiva
CAS Data Engine - iSCSI Distributed Block Storage Controller built-in Go
Stars: ✭ 121 (+278.13%)
Mutual labels:  storage, csi-driver
lvm-localpv
CSI Driver for dynamic provisioning of Persistent Local Volumes for Kubernetes using LVM.
Stars: ✭ 86 (+168.75%)
Mutual labels:  storage, csi-driver
react-native-modest-cache
💾 Simple cache for AsyncStorage
Stars: ✭ 23 (-28.12%)
Mutual labels:  storage
SuperCoreAPI
The best way to create a Plugin
Stars: ✭ 17 (-46.87%)
Mutual labels:  storage
ECS-CommunityEdition
ECS Community Edition "Free & Frictionless"
Stars: ✭ 125 (+290.63%)
Mutual labels:  storage
phaser-super-storage
A cross platform storage plugin for Phaser
Stars: ✭ 49 (+53.13%)
Mutual labels:  storage
StorageDsc
DSC resource module is used to manage storage on Windows Servers.
Stars: ✭ 58 (+81.25%)
Mutual labels:  storage
gcsfs
Google Cloud Storage filesystem for PyFilesystem2
Stars: ✭ 36 (+12.5%)
Mutual labels:  storage
storage-abstraction
Provides an abstraction layer for interacting with a storage; the storage can be local or in the cloud.
Stars: ✭ 36 (+12.5%)
Mutual labels:  storage
ibm-spectrum-scale-csi
The IBM Spectrum Scale Container Storage Interface (CSI) project enables container orchestrators, such as Kubernetes and OpenShift, to manage the life-cycle of persistent storage.
Stars: ✭ 41 (+28.13%)
Mutual labels:  storage
Floppy
Fast object key value storage for Java with much support for Android
Stars: ✭ 82 (+156.25%)
Mutual labels:  storage
ansible-unity
Ansible Modules for Dell EMC Unity
Stars: ✭ 19 (-40.62%)
Mutual labels:  storage
cossync
腾讯云COS同步(批量上传)工具
Stars: ✭ 23 (-28.12%)
Mutual labels:  storage
file-handling
File Handling Helper
Stars: ✭ 14 (-56.25%)
Mutual labels:  storage
Cherry-Node
Cherry Network's node implemented in Rust
Stars: ✭ 72 (+125%)
Mutual labels:  storage
laravel-ovh
Wrapper for OVH Object Storage integration with laravel
Stars: ✭ 30 (-6.25%)
Mutual labels:  storage
react-native-s3
React Native app to upload and display images from Amazon S3 using AWS Amplify as the back end service.
Stars: ✭ 41 (+28.13%)
Mutual labels:  storage
MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (+1756.25%)
Mutual labels:  storage
shoebox
ShoeBox is a Kotlin library for persistent data storage that supports views and the observer pattern. While often used with Kweb, it doesn't need to be.
Stars: ✭ 48 (+50%)
Mutual labels:  storage
storage-box
Intuitive and easy-to-use storage box.
Stars: ✭ 26 (-18.75%)
Mutual labels:  storage

BeeGFS CSI Driver

License Docker pulls Go report card

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.

Compatibility

The BeeGFS CSI driver must interact with both Kubernetes and a BeeGFS filesystem. To ensure compatibility with relevant versions of these key software components regular testing is done throughout each release cycle. The following table describes the versions of each component used in testing each release of the BeeGFS CSI driver. These configurations should be considered compatible and supported.

beegfs.csi.netapp.com K8s Versions Red Hat OpenShift Versions BeeGFS Client Versions CSI Version
v1.0.0 1.19 7.2 1 v1.3.0
v1.1.0 1.18, 1.19, 1.20 7.2.1 1 v1.3.0
v1.2.0 1.18, 1.19, 1.20, 1.21 4.8 (RHEL only) 7.2.4 1 v1.5.0
v1.2.1 1.19.15, 1.20.11, 1.21.4, 1.22.3 4.9 (RHEL only) 7.2.5 1 v1.5.0
v1.2.2 1.20.11, 1.21.4, 1.22.3, 1.23.1 4.10 (RHEL only; RHCOS experimental) 7.3.0, 7.2.6 1 v1.5.0

See the compatibility guide for more details on expectations of compatibility for the BeeGFS CSI driver.


Support

Support for the BeeGFS CSI driver is "best effort". The following policy is in no way binding and may change without notice.

Only the latest version of the BeeGFS CSI driver is supported. Bugs or vulnerabilities found in this version may be fixed in a patch release or may be fixed in a new minor version. If they are fixed in a new minor version, upgrading to this version may be required to obtain the fix.

Fixes for old minor versions of the driver or backporting fixes to an older minor release of the driver should not be expected. The maintainers may choose to release a fix in a patch for an older release at their discretion.

Support for the BeeGFS driver can be expected when the driver is used with components listed in the compatibility table. The ability to provide support for issues with components outside of the compatibility matrix will depend on the details of the issue.

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.


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.
    • Note: Experimental support for OpenShift environments with RedHat CoreOS nodes negates this requirement.
  • 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.

  1. 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
  2. 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.
  3. Verify all components are installed and operational: kubectl get pods -n beegfs-csi

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 beegfs-csi

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.


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.


Releases

The goal is to release a new driver version three to four times per year (roughly quarterly). Releases may be major, minor, or patch at the discretion of the maintainers in accordance with needs of the community (i.e. large features, small features, or miscellaneous bug fixes).


Versioning

The BeeGFS CSI driver versioning is based on the semantic versioning scheme outlined at semver.org. According to this scheme, given a version number MAJOR.MINOR.PATCH, we increment the:

  • MAJOR version when:
    • We make significant code changes beyond just a new feature.
    • Backwards incompatible changes are made.
  • MINOR version when:
    • New driver features are added.
    • New versions of Kubernetes or BeeGFS are supported.
  • PATCH version when: small bug or security fixes are needed in a more timely manner.

License

Apache License 2.0


Maintainers

  • Joe McCormick (@iamjoemccormick).
  • Eric Weber (@ejweber).
  • Garrett Marks (@gmarks-ntap).
  • Cole Krizek (@ckrizek).

Footnotes

  1. Support for the BeeGFS 7.1.5 filesystem is provided when the BeeGFS 7.2.x client is used. These configurations were tested in that manner. 2 3 4 5

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].