Kubernetes - NFS Server

Christian Altamirano Ayala
Kubernetes
Published in
2 min readOct 20, 2019

Hay algunas ocasiones en el que deseemos desarrollar aplicaciones que queramos guardar la data recolectada, ya sea una base de datos, archivos, etc. Para los desarrolladores que desplegaron estas aplicaciones en algún proveedor de k8s en la nube (AKS, GKE, EKS, etc.) se nos es más fácil usar volúmenes por que dichos proveedores ya implementaron la solución para esa necesidad, por si aún no te diste cuenta cuando creas algún volumen en cualquier proveedor, por defecto toma el “provider” de dicho proveedor (AWSElasticBlockStore, GCEPersistentDisk, AzureDisk). Esta característica no la encontramos cuando instalamos k8s en nuestros propios servidores, razón por la cual escribo este post para poder instalar y configurar un NFS Server para guardar la data que deseemos.

Requisitos:

  1. Tener un cluster k8s instalado (Aquí tengo una publicación de como instalarlo onPremise).
  2. Una maquina que será usado como servidor NFS.

Configuración del Servidor NFS:

Instalamos las herramientas necesarias para NFS y luego habilitamos los servicios

Instalacion NFS utilities

Ahora creamos un directorio el cual queremos compartir en nuestro caso será /home/vagrant/nfs_data y además dar ciertos permisos

Configuración NFS Server

Luego debemos de realizar la configuración en el archivo exports

vi /etc/exports

Es en este archivo donde describimos que clientes van a tener acceso a la carpeta compartida, en mi caso tengo 2 workers con ip 192.168.2.X por lo tanto la configuración será:

/home/vagrant/nfs_data 192.168.2.90(rw,sync,no_root_squash,no_subtree_check)

/home/vagrant/nfs_data 192.168.2.91(rw,sync,no_root_squash,no_subtree_check)

Una vez hecho la configuración ejecutamos el siguiente comando:

exports -a

Configuración Clientes NFS

En el lado del cliente que son los worker de k8s solo debemos instalar las herramientas necesarias:

yum -y install nfs-utils

Ahora es momento de probar dicha configuración en kubernetes para lo cual creamos un PersistentVolumen en el cual especificaremos la ip y ruta de nuestro servidor NFS

Uso de NFS creando un Persistent Volume

Si todo salio bien entonces ya podríamos crear nuestro PVC y por lo tanto asignarlos a algún POD

Usando el PV en nuestro PVC.

Ahora usaremos el PVC en un Nginx;

Desplegando nginx usando el PVC creado.

Ahora ya podemos crear subir archivos a nuestra carpeta compartida y este se mapeara en la ruta /usr/share/nginx/html de cada contenedor que se ejecute.

--

--