Skip to content

openebs-archive/jiva

Folders and files

NameName
Last commit message
Last commit date
Dec 30, 2020
Sep 23, 2020
Sep 23, 2020
Feb 8, 2021
Dec 22, 2020
Nov 11, 2020
Feb 8, 2021
May 27, 2020
Sep 23, 2020
Sep 23, 2020
Sep 23, 2020
Nov 11, 2020
Feb 8, 2021
Sep 23, 2020
Nov 11, 2020
Feb 8, 2021
Sep 23, 2020
Feb 8, 2021
Sep 23, 2020
Apr 19, 2016
Aug 25, 2016
Sep 23, 2019
Jan 28, 2020
Apr 19, 2019
Feb 8, 2021
Nov 24, 2020
Apr 23, 2019
Apr 30, 2019
May 7, 2019
Apr 7, 2016
Apr 23, 2020
Nov 11, 2020
Nov 11, 2020
May 7, 2019
Sep 22, 2020
Apr 23, 2020
Apr 23, 2020
Apr 23, 2020
Feb 8, 2021
Feb 8, 2021
Sep 23, 2020

Repository files navigation

Jiva

Build Status Go Report Card Codacy Badge GoDoc FOSSA Status CII Best Practices Community Meetings

Jiva provides highly available iSCSI block storage Persistent Volumes for Kubernetes Stateful Applications, by making use of the host filesystem.

Jiva comprises of two components:

  • A Target ( or a Storage Controller) that exposes iSCSI, while synchronously replicating the data to one or more Replicas.
  • A set of Replicas that a Target uses to read/write data. Each of the replicas will be on a different node to ensure high availability against node or network failures. The Replicas save the data into sparse files on the host filesystem directories.

Jiva is containerized storage controller. The docker images are available at:

The docker container can be used directly to spin up the volume. OpenEBS Control Plane makes it easy to manage Jiva Volumes.

When using Jiva volumes with OpenEBS, the Jiva volumes is composed of the following Kubernetes native objects.

  • A Kubernetes Service pointing to Jiva iSCSI Target
  • A Kubernetes Deployment for Jiva Target with Replicas=1
  • A Kubernetes Deployment for Jiva Replicas with Replica=n and Pod Anti-affinity set to have each Replica pod on different node

The Jiva Replica Pods are provided with Jiva iSCSI Target Service - Cluster IP and can auto-connect/register with the Targets. The Jiva Target helps in determining the consistency of data across the replicas, by taking care of rebuilding the replicas when required. A Volume will be marked as online for Read and Write - if at least more than 51% of the Replicas are online.

The number of replicas and other attributes of the Jiva volumes can be configured via Storage Class - OpenEBS annotations.

For further info, checkout OpenEBS Documentation or join the slack#

Inspiration and Credit

Rancher Longhorn, which helped with the significant portion of the code in this repo, helped us to validate that Storage controllers can be run as microservices and they can be coded in Go. The iSCSI functionality is derived from gostor/gotgt.

License

FOSSA Status