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:

  1. Configuration/Organizing Cluster Access Using kubeconfig Files
  2. Configuration/Organizing Cluster Access Using kubeconfig Files
  3. Mastering-kubeconfig