无法从 Kubernetes 获取 apiVersions:无法检索服务器 API 的完整列表

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

尝试部署应用程序时出现如下错误:

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

kubectl api-resources 的输出包含一些资源以及最后的相同错误。

环境:Azure 云,AKS 服务

当主节点无法访问您的指标服务器 pod 时,通常会发生此错误。可能的原因是

  1. metric-server pod 不是 运行。这是您应该检查的第一件事。然后查看 metric-server pod 的日志,检查它在尝试获取 metrics

  2. 时是否存在一些权限问题
  3. 尝试确认主从节点之间的通信

  4. 尝试运行kubectl top nodeskubectl top pods -A看看metric-server是否运行正常。

从这些点你可以进一步进行。

解决方案:

我遵循的步骤是:

  1. kubectl get apiservices :如果 metric-server 服务因错误 CrashLoopBackOff 而关闭,请尝试按照步骤 2 进行操作,否则只需尝试重新启动 metric - 服务器服务使用 kubectl delete apiservice/"service_name"。对我来说是 v1beta1.metrics.k8s.io .

  2. kubectl get pods -n kube-system 发现 pods 像 metrics-server, kubernetes-dashboard 因为主要的 coreDNS pod 宕机了。


对我来说是:

NAME                          READY   STATUS             RESTARTS   AGE
pod/coredns-85577b65b-zj2x2   0/1     CrashLoopBackOff   7          13m
  1. 使用 kubectl describe pod/"pod_name" 检查 coreDNS pod 中的错误以及它是否因 /etc/coredns/Corefile 而关闭:10 - 解析期间出错:未知指令代理 ,那么我们需要在 coreDNS 配置所在的 yaml 文件中使用 forward 而不是 proxy 。因为图像使用的 CoreDNS 版本 1.5x 不再支持 proxy 关键字。