I followed this guide https://coreos.com/kubernetes/docs/latest/deploy-workers.html to setup a Kubernetes network and when I ran the Dashboard or DNS add-ons they resulted in crashloopbackoff after 25 seconds. I then followed this https://github.com/kubernetes/dashboard/blob/master/docs/user-guide/troubleshooting.md which timed out at when I executed
kubectl exec test-701078429-s5kca -- curl -k https://10.3.0.1
note if I executed kubectl exec test-701078429-s5kca -- curl -k https://192.168.3.240 it worked (public IP)
also if I executed curl -k https://10.3.0.1 on the master node is also worked.
So the problem is that my Kubelets on 10.2.0.0/16 can not communicate with the api server on 10.3.0.1/24 which suggests it may be a kube proxy issue. FYI: I can sucessfully ping from inside one node on one machine to another node on a different machine using 10.2.x.x