Introduction

Overview

Sarkanopen in new window is a collection of Kubernetesopen in new window components to enable a distributed, scalable, fault-tolerant and highly available software-defined storage based on SaunaFSopen in new window.

SaunaFS is a robust distributed POSIX filesystem that offers unmatched efficiency, security, and redundancy. Sarkan builds on top of it to bring these traits to the Kubernetes world as a batteries-included storage platform. It simplifies usage and management of SaunaFS and enables new range of capabilities by utilizing Kubernetes-native components to provide easily scalable storage to containers (Pods) and external workloads.

Components

Sarkan provides three Kubernetes-native components:

  • HostDisk CSI - a CSIopen in new window driver that exposes block devices of cluster nodes as volumes to the Kubernetes. These volumes can be then used as backing storage for SaunaFS components or other Kubernetes workloads.
  • SaunaFS Operator - a Kubernetes operatoropen in new window for SaunaFS. It manages configuration, deployments, lifecycle and updates of SaunaFS components within Kubernetes cluster. It can use Kubernetes volumes for backing storage, both from aforementioned HostDisk CSI as well as other drivers.
  • SaunaFS CSI - a CSI driver that exposes SaunaFS shares as volumes to the Kubernetes. These volumes can be then used as storage for containerized workloads.

All components are implemented in a decoupled fashion allowing them to be used interchangeably with each other as well as other Kubernetes-native components. For example you can skip HostDisk CSI when deploying SaunaFS Operator to a Kubernetes cluster that already has a storage driver that can be used as backing storage, or you could skip SaunaFS CSI if you are going to use SaunaFS only for storage to external (from cluster perspective) workloads.

Architecture

Simplified Sarkan architecture

You can see a simplified architecture of Sarkan on the illustration above. Following from the bottom up:

  • Block devices of cluster nodes are exposed to Kubernetes via HostDisk CSI as Persistent Volumesopen in new window (PV) - an object that represents a piece of storage in the cluster. These PVs can then be mounted as storage to workloads inside the cluster. Because these PVs represent a storage that's physically connected to one of the nodes, all workloads consuming that storage must be ran on that node which would prevent us from using horizontal scaling capabilities offered by Kubernetes efficiently when used directly.
  • PVs mapped to block devices are then used as a backing storage for SaunaFS components orchestrated by SaunaFS Operator creating a distributed POSIX filesystem. This filesystem is available from inside the cluster as well as externally via a Load Balancer serviceopen in new window.
  • SaunaFS filesystem can be then exposed to Kubernetes via SaunaFS CSI as PVs as well. Unlike PVs managed by HostDisk CSI, these can be mounted simultaneously on multiple nodes and consumed by user workloads.