Kubernetes Storage Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 100: Line 100:
The claim is immediately bound, as it finds a matching persistent volume:
The claim is immediately bound, as it finds a matching persistent volume:


kubectl get pv
kubectl get pvc
NAME                      CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS      CLAIM                        STORAGECLASS          REASON  AGE
NAME                  STATUS  VOLUME                    CAPACITY  ACCESS MODES  STORAGECLASS          AGE
worker-00-local-volume-0  10Gi      RWO            Delete          Bound      default/local-storage-claim  manual-local-storage            6m37s
local-storage-claim  Bound    worker-00-local-volume-0  10Gi      RWO            manual-local-storage  2m19s
 
kubectl get pv
NAME                      CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS      CLAIM                        STORAGECLASS          REASON  AGE
worker-00-local-volume-0  10Gi      RWO            Delete          Bound      default/local-storage-claim  manual-local-storage            6m37s
  worker-01-local-volume-0  10Gi      RWO            Delete          Available                                manual-local-storage            5m5s
  worker-01-local-volume-0  10Gi      RWO            Delete          Available                                manual-local-storage            5m5s

Revision as of 02:53, 12 December 2019

Internal

Get Information about Persistent Volumes

kubectl get pv <pv-name>
kubectl describe pv <pv-name>

Get Information about Persistent Volumes Claims

kubectl get pvc <pvc-name>
kubectl describe pvc <pvc-name>

Get Information about Storage Classes

NFS volume Example

This is an example to setup and use an nfs volume.

TODO: https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs

Local Volumes

Create a Local Volume, the corresponding Persistent Volume and a Persistent Volume Claim that Binds to It

This is the step-by-step procedure to create a persistent volume backed by a local volume and expose it to a pod with a matching persistent volume claim.

Expose a Local Disk

In this context, "exposing a local disk" means exposing a raw block device. TODO.

Expose a Local Directory

Define a local directory that will be exposed as a persistent volume:

mkdir /mnt/disk1/local-volume-0

Define the persistent volume API resource instance:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: worker-00-local-volume-0
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: manual-local-storage
  local:
    path: /mnt/disk1/local-volume-0
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-00

Note that in the persistent volume metadata shown above, "worker-00" is the name of the node, as known to Kubernetes. It can be obtained with:

kubectl get nodes -o wide

If the cluster has more than one node, symmetrical persistent volumes can be created for other nodes as well.

Upon creation, the persistent volumes can be listed with:

kubectl get pv
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS           REASON   AGE
worker-00-local-volume-0   10Gi       RWO            Delete           Available           manual-local-storage            94s
worker-01-local-volume-0   10Gi       RWO            Delete           Available           manual-local-storage            2s

Create a Matching Persistent Volume Claim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-storage-claim
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: manual-local-storage
  resources:
    requests:
      storage: 10Gi

Aside from attributes like storage amount request access mode, the storage class name must match.

The claim is immediately bound, as it finds a matching persistent volume:

kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE local-storage-claim Bound worker-00-local-volume-0 10Gi RWO manual-local-storage 2m19s

kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE worker-00-local-volume-0 10Gi RWO Delete Bound default/local-storage-claim manual-local-storage 6m37s

worker-01-local-volume-0   10Gi       RWO            Delete           Available                                 manual-local-storage            5m5s