Today I got the following error message when trying to run kubectl
on my Kubernetes Cluster:
$ kubectl get pods
error: You must be logged in to the server (Unauthorized)
This issue can happen after renewing kubernates certificates and is caused the existing ~/.kube/config
to have outdated keys and certificate values in it.
Kubernetes is renewing the certificates automatically and so you need to update your local copy too. You can check the status of your Kubernetes server certificate with:
$ openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
Not Before: Jan 8 21:13:17 2021 GMT
Not After : Nov 13 14:46:01 2022 GMT
Running kubectl
on a server you can simply renew your .kube/config
file with the latest one from your server:
$ cp .kube/config .kube/config_old
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config