Kubernetes-Storage
Volume Types
emptyDir
Empty directory for storing data ephemeral data from the Pods
apiVersion: v1 kind: Pod spec: volumes: - name: html emptyDir: {} containers: - name: nginx image: nginx:alpine volumeMounts: - name: html mountPath: /usr/share/nginx/html readOnly: false - name: html-example image: alpine:latest command: ["/bin/sh", "-c"] args: - while true; do date >> /html/index.html; sleep 10; done volumeMounts: - name: html mountPath: /html readOnly: false
hostPath
A volume that's mounted in the Node's filesystem and is shared with a Pod
nfs
A NFS share mounted into the Pod
configMap/secret
Provides access to Kubernetes resources
persistentVolumeClaim
A persistentVolume
is a cluster-wide storage resource that relies on
network-attached storage. It's abstracted and associated to a Pod via a
PersistentVolumeClaim
(PVC).
- Definying a persistent volume
apiVersion: v1 kind: PersistentVolume metadata: name: pv-1 spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce - ReadOnlyMany persistentVolumePolicy: Retain azureFile: secretName: <azure-secret> shareName: <azure-fileshare> readOnly: false
- Setting up a volume claim
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pv-demo annotations: volume.beta.kubernetes.io/storage-class: accounthdd spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: cdk-cinder
Cloud
Cluster-wide storage, which varies depending on the cloud provider
- AWS
- Elastic Block Store
- Azure
- Azure Disk
- Azure File
- GCP
- GCE Persistent Disk