Kubernetes Storage Concepts: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 11: Line 11:


The Kubernetes [[#Persistent_Volume_Subsystem|persistent volume subsystem]] supports, among others:
The Kubernetes [[#Persistent_Volume_Subsystem|persistent volume subsystem]] supports, among others:
* iSCSI
* iSCSI volumes
* SMB
* SMB
* Enterprise storage arrays from vendors like EMC and NetApp
* Enterprise storage arrays from vendors like EMC and NetApp
* NFS
* NFS volumes
* [[Storage_Concepts#Object_Storage|object storage blobs]]
* [[Storage_Concepts#Object_Storage|object storage blobs]]
* Amazon [[Amazon Elastic Block Store|Elastic Block Store]] [[Amazon_Elastic_Block_Store_Concepts#Block_Device|block devices]]
* Amazon [[Amazon Elastic Block Store|Elastic Block Store]] [[Amazon_Elastic_Block_Store_Concepts#Block_Device|block devices]]

Revision as of 02:09, 10 December 2019

Internal

Overview

Kubernetes has a mature and feature-rich subsystem called the persistent volume subsystem. Regardless of where it comes from, storage is exposed to the Kubernetes cluster in the form of a volume.

Storage Providers

Storage is exposed to a Kubernetes cluster by storage providers.

The Kubernetes persistent volume subsystem supports, among others:

Each storage provider has its own plugin that handles the details of exposing the storage to the Kubernetes cluster.

Storage Plugins

The terms "storage plugin" and "provisioner" are used interchangeably.

Old storage plugins used to be implemented as part of the main Kubernetes code tree (in-tree), which raised a series of problems, such as that all had to be open-source and their release cycle was tied to the Kubernetes release cycle.

Newer plugins are based on the Container Storage Interface (CSI).

Plugin Types

kuberentes.io/aws-ebs

Container Storage Interface (CSI)

Container Storage Interface (CSI) is an open standard that provides a clean interface for storage plugins and abstracts the internal Kubernetes storage details.

API Resources

The persistent volume subsystem consists of the following three primitives that allow applications to consume storage:

PersistentVolume (PV)

A single external storage volume can only be used by a single persistent volume.

PersistentVolumeClaim (PVC)

A persistent volume claim is similar to a ticket that authorizes a pod to use a certain persistent volume.

StorageClass (SC)

Volume

Secrets may be exposed as files in dedicated volumes mounted in the pod.

Volume Type

Dynamic Volume Provisioning

Dynamic volume provisioner https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/

Organizatorium