{{tag>kubernetes volumens volumenes pv pvc}}
===== Volumes =====
==== Definiciones ====
* pv = PersistentVolume (Volumen Persistente)
* pvc = PersistentVolumeClaim (Solicitud de Volumen Persistente)
Por ejemplo kubectl get pvc kubectl get pv
==== 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
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: {}
==== 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
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
==== 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