Sanket Singh
Sanket Singh

Reputation: 1366

Could not get apiVersions from Kubernetes: Unable to retrieve the complete list of server APIs

While trying to deploy an application got an error as below:

Error: UPGRADE FAILED: could not get apiVersions from Kubernetes: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request

Output of kubectl api-resources consists some resources along with the same error in the end.

Environment: Azure Cloud, AKS Service

Upvotes: 12

Views: 34010

Answers (2)

Sanket Singh
Sanket Singh

Reputation: 1366

Solution:

The steps I followed are:

  1. kubectl get apiservices : If metric-server service is down with the error CrashLoopBackOff try to follow the step 2 otherwise just try to restart the metric-server service using kubectl delete apiservice/"service_name". For me it was v1beta1.metrics.k8s.io .

  2. kubectl get pods -n kube-system and found out that pods like metrics-server, kubernetes-dashboard are down because of the main coreDNS pod was down.


For me it was:

NAME                          READY   STATUS             RESTARTS   AGE
pod/coredns-85577b65b-zj2x2   0/1     CrashLoopBackOff   7          13m
  1. Use kubectl describe pod/"pod_name" to check the error in coreDNS pod and if it is down because of /etc/coredns/Corefile:10 - Error during parsing: Unknown directive proxy, then we need to use forward instead of proxy in the yaml file where coreDNS config is there. Because CoreDNS version 1.5x used by the image does not support the proxy keyword anymore.

Upvotes: 29

Moulick
Moulick

Reputation: 4792

This error happens commonly when your metrics server pod is not reachable by the master node. Possible reasons are

  1. metric-server pod is not running. This is the first thing you should check. Then look at the logs of the metric-server pod to check if it has some permission issues trying to get metrics

  2. Try to confirm communication between master and slave nodes.

  3. Try running kubectl top nodes and kubectl top pods -A to see if metric-server runs ok.

From these points you can proceed further.

Upvotes: 3

Related Questions