Pregunta:
¿Es posible que un clúster de CoreOS comparta espacio en disco, por ejemplo, utilizando NFS? Si es así, ¿cómo se haría con esto? (por ejemplo, en el escenario en el que un nodo tiene mucho espacio en disco). Esto sería útil para evitar que cada nodo tenga que descargar y almacenar su propia biblioteca de imágenes de la ventana acoplable, por ejemplo, o para compartir el espacio del directorio de inicio entre los nodos.
Debido a que no podemos instalar software adicional directamente en CoreOS, imagino que uno tendría que escribir un contenedor solo para instalar NFS (por ejemplo, nfs-kernel-server
en un contenedor basado en Ubuntu).
No tengo idea de si esto es posible, pero espero que haya alguna forma establecida de compartir espacio en disco en un clúster de CoreOS (después de todo, parece una expectativa común para un clúster, y tal vez mi propuesta a continuación sea más complicada de lo necesario) . Solo para proporcionar algo de información para la retroalimentación, esto es lo que estoy pensando hasta ahora:
Proporcionar el lado del host de NFS parece una tarea de Docker razonable, por ejemplo, imagino un Dockerfile como:
FROM ubuntu:14.04
ENV CLIENT_IP 11.111.111.111
RUN apt-get update && apt-get install -y nfs-kernel-server supervisor
RUN mkdir /var/nfs && chown nobody:nogroup /var/nfs
RUN echo "/home ${CLIENT_IP}(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports
RUN echo "/var/nfs ${CLIENT_IP}(rw,sync,no_subtree_check)" >> /etc/exports
RUN exportfs -a
CMD service nfs-kernel-server start
Donde CLIENT_IP
se completó correctamente (y tal vez necesitemos reemplazar el CMD con una llamada al supervisord
o similar para que esto sea persistente, pero entiendes la idea)
Entonces, ¿cómo vincularíamos los volúmenes de manera adecuada al ejecutar este contenedor? ¿Qué volumen enlazaríamos desde el host CoreOS? ¿O necesito agregar algo como --net="host"
para que el cliente esté disponible?
docker run -v /home:/home nfs-server
No tengo del todo claro cómo podríamos implementar el lado del cliente de las cosas, ya que una vez más necesitaríamos un contenedor para proporcionar nfs-common
, y de alguna manera descubrir cómo otros contenedores podrían compartir ese recurso (quizás algún uso apropiado de --volumes-from
?) Me encantaría ver un esquema de cómo hacer esto, o por qué no es posible y si hay mejores alternativas para abordar este caso de uso. ¡Gracias!
Respuesta:
Debería poder montar un volumen NFS en el host CoreOS. Si no hay herramientas de usuario para exportar un sistema de archivos desde CoreOS, puede usar el contenedor de caja de herramientas de Fedora proporcionado por el comando de toolbox
.