2 min read | by Jordi Prats
To be able to test Kubernetes applications, minikube is a great tool: You can create an ephemeral Kubernetes cluster to test whatever is needed and delete it as easily as it was created. Futhermore, since it can use your computer's resources you won't get billed as you would if you'd choose to use a cloud provider.
Another advantage is that we can make available local directories to the cluster using minikube mount
To do so we'll need to specify first the local directory we want to share and to what directory we want it mapped on the Kubernetes host. So, it's format is:
minikube mount <local directory>:<host directory>
An example command would be:
$ minikube mount /home/pet2cattle/Downloads:/downloads 📁 Mounting host path /home/pet2cattle/Downloads into VM as /downloads ... ▪ Mount type: ▪ User ID: docker ▪ Group ID: docker ▪ Version: 9p2000.L ▪ Message Size: 262144 ▪ Options: map[] ▪ Bind Address: 192.168.49.1:41889 🚀 Userspace file server: ufs starting ✅ Successfully mounted /home/pet2cattle/Downloads to /downloads 📌 NOTE: This process must stay alive for the mount to be accessible ...
While this process stays running, we can mount the host directory on a pod using hostPath, for example:
apiVersion: v1 kind: Pod metadata: name: minikube-mount spec: volumes: - name: minikube-mount hostPath: path: /downloads type: Directory containers: - image: alpine:latest name: one command: - sleep - 24h volumeMounts: - name: minikube-mount mountPath: /mnt/minikube
Once applied this yaml file, we can run a command on the target Pod to check that we can access the files shared using minikube mount:
$ kubectl apply -f minikube-mount.yaml pod/minikube-mount created $ kubectl get pods NAME READY STATUS RESTARTS AGE minikube-mount 1/1 Running 0 45s $ kubectl exec -it minikube-mount -- ls /mnt/minikube (...) zoom_amd64(1).deb zoom_amd64(2).deb zoom_amd64.deb
Posted on 14/03/2022