Kubernetes Storage Operations: Difference between revisions
Line 78: | Line 78: | ||
<syntaxhighlight lang='yaml'> | <syntaxhighlight lang='yaml'> | ||
apiVersion: v1 | apiVersion: v1 | ||
kind: | kind: PersistentVolumeClaim | ||
metadata: | metadata: | ||
name: | name: local-storage-claim | ||
spec: | spec: | ||
accessModes: | accessModes: | ||
- | - RedWriteOnce | ||
storageClassName: manual-local-storage | storageClassName: manual-local-storage | ||
resources: | |||
requests: | |||
storage: 10 Gi | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Aside from attributes like storage amount request access mode, the storage class name must match. |
Revision as of 02:49, 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:
- RedWriteOnce
storageClassName: manual-local-storage
resources:
requests:
storage: 10 Gi
Aside from attributes like storage amount request access mode, the storage class name must match.