1.9 KiB
For the tutorial, we served images via HTTP with a local S3 bucket using MinIO and an OCI registry. We could instead serve our images by network mounting the directories that hold our images with NFS. We can spin up a NFS server on the head node by including NFS tools in our base image and configure our nodes to mount the images.
Configure NFS to serve your SquashFS nfsroot with as much performance as possible.
sudo mkdir -p /opt/nfsroot && sudo chown rocky /opt/nfsroot
Create a file at path /etc/exports and copy the following contents to export the /opt/nfsroot directory for use by our compute nodes.
/opt/nfsroot *(ro,no_root_squash,no_subtree_check,noatime,async,fsid=0)
Reload the NFS daemon to apply the changes.
modprobe -r nfsd && modprobe nfsd
For NFS, we need to update the /etc/exports file and then reload the kernel nfs daemon
Create /opt/nfsroot to serve our images
sudo mkdir /srv/nfs
sudo chown rocky: /srv/nfs
-
Create the
/etc/exportsfile with the following contents to export the/srv/nfsdirectory for use by our compute nodes/srv/nfs *(ro,no_root_squash,no_subtree_check,noatime,async,fsid=0) -
Reload the nfs daemon
sudo modprobe -r nfsd && sudo modprobe nfsd
Webserver for Boot Artifacts
We expose our NFS directory over https as well to make it easy to serve boot artifacts.
# nginx.container
[Unit]
Description=Serve /srv/nfs over HTTP
After=network-online.target
Wants=network-online.target
[Container]
ContainerName=nginx
Image=docker.io/library/nginx:1.28-alpine
Volume=/srv/nfs:/usr/share/nginx/html:Z
PublishPort=80:80
[Service]
TimeoutStartSec=0
Restart=always