Volumes

Definiciones

pv = PersistentVolume (Volumen Persistente)

pvc = PersistentVolumeClaim (Solicitud de Volumen Persistente)

Por ejemplo <sxh>kubectl get pvc </sxh> <sxh>kubectl get pv </sxh>

Tipos

Tenermos varios tipos:

emptyDir

hostPath

Cloud

EmpyDir

Crea un directorio vacio en el pod y que estara disponible mientras exista el pod. Independiente de que los containers de dentro del pod se destruyan, recreen, reinicien , etc

Ejemplo <sxh yaml> apiVersion: v1 kind: Pod metadata:

name: test-pd

spec:

containers:
- image: nginx:alpine
name: test-container
volumeMounts:
- mountPath: /var/log/nginx #indica el directorio que vamos a montar como un volumen emptyDir
name: vol
volumes:
- name: vol
emptyDir: {}

</sxh>

hostPath

Crea el volumen en un directorio del nodo donde corre el pod

Ojo ya que al estar el volumen asociado al nodo donde corre el pod, si este cambia de nodo dejaría de poder acceder

<sxh yaml> apiVersion: v1 kind: PersistentVolume metadata:

name: task-pv-volume
labels:
type: local

spec:

storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/test"

— apiVersion: v1 kind: PersistentVolumeClaim metadata:

name: task-pv-claim

spec:

storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

</sxh>

NFS

Kubernetes permite montar volúmenes NFS existentes en un pod. Los volúmenes NFS son volúmenes externos al cluster Kubernetes y son persistentes, su contenido se mantiene después de la eliminación de los pods que lo tengan montado.

Cloud

Openstack Cinder

Referencias

https://github.com/ricardoandre97/k8s-resources/tree/master/volumes