Minikube is supposed to make it simple to run Kubernetes locally, not only for "getting started" but also for "day-to-day development workflows".
source : https://github.com/kubernetes/minikube/blob/master/ROADMAP.md#goals
But I can also read that : "PersistentVolumes are mapped to a directory inside the minikube VM. The Minikube VM boots into a tmpfs, so most directories will not be persisted across reboots (minikube stop)"
source : https://kubernetes.io/docs/getting-started-guides/minikube/#persistent-volumes
So what if my developments need persistent storage (MySQL database, mongodb database, ...) ? Do I need to throw my Minikube and install directly the full Kubernetes ?
This is covered in the documentation. The relevant section starts right after the sentence that you've already quoted:
However, Minikube is configured to persist files stored under the following host directories:
- /data
- /var/lib/localkube
- /var/lib/docker
Here is an example PersistentVolume config to persist data in the ‘/data’ directory:
apiVersion: v1 kind: PersistentVolume metadata: name: pv0001 spec: accessModes: - ReadWriteOnce capacity: storage: 5Gi hostPath: path: /data/pv0001/
Simply declare hostPath
volumes that are mapped to any directory in /data
on the host, and these should persist across reboots.
Here is the answer from a Minikube contributer, confirming there was a problem in the documentation :
I've reworded the readme to make a little more sense.
The host is the computer you're running minikube on. This is only exposed to the VM through the mounted host folders https://github.com/kubernetes/minikube/blob/master/docs/host_folder_mount.md
The guest, or minikube VM, will persist certain folders to a disk stored on the host (something like ~/.minikube/machines/minikube/disk.vmdk). Files stored in certain directories in the minikube VM will persist between start/stops, but not deletes.
Or you can try https://github.com/reachlin/k8s0/, which is a full-fledged kubernetes installed on a single host using ansible.