Can not find kubeconfig file
Solution 1:
In my case I had KUBECONFIG variable set to "~/.kube/config" in .bashrc. The file existed & had correct permissions yet it wasn't being resolved somehow. Turned out I had to use ${HOME} in place of ~. That did the trick.
Solution 2:
If your kubectl
works correctly against your cluster than the /kube/config
file should be there.
You can check the location of the file with increasing verbosity level when launching the command:
➜ ~ kubectl get pods -v=6
...] Config loaded from file: /home/thomas/.kube/config ◄ ◄ ◄ ◄ ◄
...] Starting client certificate rotation controller
...] GET https://172.17.0.4:8443/api/v1/namespaces/default/pods?limit=500 200 OK in 11 milliseconds
There is workaround that enables you to generate the config with kubectl config view --flatten
:
--flatten[=false]: flatten the resulting kubeconfig file into self contained output (useful for creating portable kubeconfig files)
There is also possibility that while boostraping your cluster with kubeadm you did not move the files accordingly to the instructions (:
-
To make kubectl work for your non-root user, run these commands, which are also part of the
kubeadm init
output:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
Alternatively, if you are the
root
user, you can run:export KUBECONFIG=/etc/kubernetes/admin.conf
If you used kubectl with sudo you will be using kube/config
from your root path.
For more reading please have a look at these:
- Configuration/Organizing Cluster Access Using kubeconfig Files
- Configuration/Organizing Cluster Access Using kubeconfig Files
- Mastering-kubeconfig