jiva

command module
v1.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2020 License: Apache-2.0 Imports: 12 Imported by: 0

README

Jiva

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

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
backend
frontend
rpc
tests
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL