NFS and Microk8s
Jump to navigation
Jump to search
#!/usr/bin/env bash
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <uuid> <nfs node type server/client>"
echo "Example: $0 28a1f1f8-e686-11eb-bf45-7f257ca7269b server"
exit
fi
uuid=$1
node_type=$2
server_host=nas
server_mnt=/$uuid
server_net_mnt=${server_host}:{server_dir}
# local_mnt=/var/snap/microk8s/common/nas-nfs-standard
client_mnt=/opt/local-path-provisioner
client_ips="10.x.x.x 10.x.x.x 10.x.x.x"
if ! [[ $uuid =~ ^\{?[A-F0-9a-f]{8}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{12}\}?$ ]]; then
echo "E: Invalid uuid format."
exit
fi
install_client(){
echo Installing client.
grep $server_mnt /etc/fstab || sudo echo "$server_net_mnt $client_mnt nfs" | sudo tee -a /etc/fstab
sudo mkdir -p $client_mnt && sudo chmod 0755 $client_mnt
sudo apt install -y nfs-client # nfs-common
}
install_server(){
echo Installing server.
sudo apt install nfs-kernel-server
sudo mkdir -p $server_mnt && sudo chmod 0755 $server_mnt
sudo mv /etc/exports /etc/exports.bkp
for ip in $client_ips; do
echo "$server_mnt $ip(rw,sync,no_subtree_check,insecure,no_root_squash)" | sudo tee -a /etc/exports
done
sudo chmod 0644 /etc/exports
sudo systemctl reload nfs-server
}
install_localpathprov(){
# https://github.com/rancher/local-path-provisioner
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc/pvc.yaml
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml
}
if [[ "$node_type" == "server" ]]; then
install_server
elif [[ "$node_type" == "client" ]]; then
install_client
else
echo "E: Unsupported node_type."
fi
Testing
mkdir ~/mnt sudo mount -t nfs $server_host:/28a1f1f8-e686-11eb-bf45-7f257ca7269b ~/mnt echo hi > ~/mnt/hi.txt cat ~/mnt/hi.txt