Accessing k8s outside of VM
kubectl port-forward forwards connections to a local port to a port on
  a pod. Compared to kubectl proxy, kubectl port-forward is more generic
  as it can forward TCP traffic while kubectl proxy can only forward
  HTTP traffic. Generally speaking, using port forwarding you could get
  on your ‘localhost’ any services launched in your cluster.


https://stackoverflow.com/questions/58360323/difference-between-kubectl-port-forwarding-and-proxy
It does not make a lot of sence to run 'kubectl proxy' from inside VM running k8s cluster. Kubectl is your client tool, so stick with it outside of cluster range.
The way you would access production services, for the most part if your service is DB oriented stick with ClusterIP. If you want to externally access some Web/HTTP service expose it as a Load Balancer or an Ingress ( in case u have N of them ). If you want to test the DB you could just run a dummy pod and execute some sql-client commands from there.