OpenShift Volume Concepts

From NovaOrdis Knowledge Base
Revision as of 01:29, 6 February 2018 by Ovidiu (talk | contribs) (→‎EmptyDir)
Jump to navigation Jump to search

Internal

The Volume Mechanism

Volumes are mounted filesystems available to pods and their containers. Volumes may be backed by a number of host-local or network attached storage endpoints. The simplest volume type is EmptyDir, which is a temporary directory on a single machine. Administrators may also allow to request and attach Persistent Volumes.

Various contexts list the following objects as "volumes":

Volume Types

Persistent Volume Claim

A persistent volume claim is a request for a persistence resource with specific attributes, such as storage size. Persistent volume claims are matched to available volumes and binds the pod to the volume. This process allows a claim to be used as a volume in a pod: OpenShift finds the volume backing the claim and mounts it into the pod. Persistent volume claims are project-specific objects.

The pod can be disassociated from the persistent volume by deleting the persistent volume claim. The persistent volume transitions from a "Bound" to "Released" state. To make the persistent volume "Available" again, edit it and remove the persistent volume claim reference, as shown here. Transitioning the persistent volume from "Released" to "Available" state does not clear the storage content - this will have to be done manually.

Persistent Volume Claim Definition

All persistent volume claims for the current project can be listed with:

oc get pvc
Persistent Volume Claim Operations

EmptyDir

https://docs.openshift.com/container-platform/latest/dev_guide/volumes.html#dev-guide-volumes
https://kubernetes.io/docs/concepts/storage/volumes/#emptydir

An "emptyDir", also known as a "temporary pod volume", is created when the pod is assigned to a node, and exists as long as the pod is running on the node. It is initially empty. Containers in a pod can all read and write the same files in the "emptyDir" volume, though the volume can be mounted at the same or different paths in each container.

When the pod is removed from the node, the data is deleted. If the container crashes, that does not remove the pod from a node, so data in an empty dir is safe across container crashes.

The "emptyDir" volumes are stored on whatever medium is backing the node (disk, network storage). The mapping on the local file system backing the node can be discovered by identifying the container and then executing a docker inspect:

"Mounts": [
    {
        "Source": "/var/lib/origin/openshift.local.volumes/pods/1806c74f-0ad4-11e8-85a1-525400360e56/volumes/kubernetes.io~empty-dir/emptydirvol1",
        "Destination": "/something",
        "Mode": "Z",
        "RW": true,
        "Propagation": "rprivate"
    }
    ...

EmptyDir Operations

Adding an EmptyDir Volume

ConfigMap

Downward API

Host Path

Secret

NFS

Persistent Volume

https://docs.openshift.com/container-platform/latest/dev_guide/persistent_volumes.html
https://docs.openshift.com/container-platform/latest/architecture/additional_concepts/storage.html#persistent-volumes
https://docs.openshift.com/container-platform/latest/install_config/persistent_storage/index.html
Kubernetes Persistent Volume

Persistent volumes can be listed with oc get pv.

Persistent Volume Operations

Persistent Volume Definition

Persistent Volume Definition