Accessing Postgresql data of Kubernetes cluster
I found a solution to my problem of downloading the volume directory, however when I run multiple replicasets of postgres, the tables of the DB are still scattered between the pods.
Heres what I did to download the postgres volume:
First of all, minikube supports some specific directories for volume appear:
minikube is configured to persist files stored under the following directories, which are made in the Minikube VM (or on your localhost if running on bare metal). You may lose data from other directories on reboots.
/data /var/lib/minikube /var/lib/docker /tmp/hostpath_pv /tmp/hostpath-provisioner
So Ive changed the mount path to be under the
/data directory. This made the database volume visible.
After this I sshed into minikube and copied the database volume to a new directory (I used
/home/docker as the user of
sudo cp -R /data/pgdata /home/docker
pgdata was still owned by
root (access denied error) so I changed it to be owned by
docker. For this I also set a new password which I knew:
sudo passwd docker # change password for docker user sudo chown -R docker: /home/docker/pgdata # change owner from root to docker
Then you can exit and copy the directory into you local machine:
exit scp -r $(minikube ssh-key) docker@$(minikube ip):/home/docker/pgdata [your_local_path].
Marios advice, which is to use
pgdump is probably a better solution to copy a database. I still wanted to download the volume directory to see if it has the full database, when the pods have only a part of all the tables. In the end it turned out it doesnt.