kubectl最高节点错误:指标不可用。使用Metrics-server作为Heapster的描述

时间:2018-10-08 01:07:56

标签: docker kubernetes

Kubernetes无法找到度量服务器api。我在Mac上的Docker上使用Kubernetes。我正尝试通过以下示例[https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/]进行HPA。但是,当我执行命令kubectl get hpa时,我的目标仍然是未知的。然后我尝试了kubectl describe hpa。这给了我如下错误:

  Name:                                                  php-apache
  Namespace:                                             default
  Labels:                                                <none>
  Annotations:                                           <none>
  CreationTimestamp:                                     Sun, 07 Oct 2018 12:36:31 -0700
  Reference:                                             Deployment/php-apache
  Metrics:                                               ( current / target )
    resource cpu on pods  (as a percentage of request):  <unknown> / 5%
  Min replicas:                                          1
  Max replicas:                                          10
  Conditions:
    Type           Status  Reason                   Message
    ----           ------  ------                   -------
    AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
    ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: no metrics returned from resource metrics API
  Events:
    Type     Reason                        Age               From                       Message
    ----     ------                        ----              ----                       -------
    Warning  FailedComputeMetricsReplicas  1h (x34 over 5h)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
    Warning  FailedGetResourceMetric       1m (x42 over 5h)  horizontal-pod-autoscaler  unable to get metrics for resource cpu: no metrics returned from resource metrics API

我正在使用Kubernetes文档中建议的[https://github.com/kubernetes-incubator/metrics-server]。我也尝试只使用Minikube做同样的事情。但这也不起作用。

运行kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes输出:

{
  "kind": "NodeMetricsList",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes"
  },
  "items": []
}

6 个答案:

答案 0 :(得分:2)

解决方案(如果使用Minikube):

将Kubernetes的上下文更改为Minikube

在minikube中启用了指标服务器和禁用堆。

minikube addons disable heapster

minikube addons enable metrics-server

使用以下步骤在群集中部署指标服务器:

git clone https://github.com/kubernetes-incubator/metrics-server.git

cd metrics-server

kubectl create -f deploy/1.7/(如果为Kubernetes 1.7版)

OR

kubectl create -f deploy/1.8+/(如果Kubernetes版本是1.8+)

开始minikube dashboadminikube service [your service]

尝试kubectl top node

我发现此(https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/)资源很有帮助。

答案 1 :(得分:1)

运行此命令以创建 metrics-server

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.2/components.yaml

然后再试一次这个命令

kubectl top nodes

你可以得到结果:

NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   

答案 2 :(得分:0)

我知道这是一个较晚的答案,但是我自己在使用Docker Kubernetes和Autoscaler时遇到了一些问题,但在互联网上找不到合适的答案。经过数天的调试,我发现metrics-server存在一些连接问题(无法连接到Pod)。

我在metrics-server中关闭了TLS,它开始工作。.如果其他人遇到相同的问题,我在这里回答了自己的帖子:

Docker Kubernetes (Mac) - Autoscaler unable to find metrics

答案 3 :(得分:0)

使用minikube 1.4.0时,除了minikube start以外,无需执行其他任何操作:kubectl top node/pod应该可以立即使用。

答案 4 :(得分:0)

在群集中使用以下命令来设置Metrics Server:

kubectl apply -f https://github.com/pythianarora/total-practice/blob/master/sample-kubernetes-code/metrics-server.yaml

这应该很好。

我在metrics-server中关闭了TLS,并且在它开始工作后,我更新了YAML并重新发布了。

答案 5 :(得分:0)

确保您在 Kubernetes 集群上使用最新的 metrics-server。下面的命令帮助了我。

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

参考链接:https://github.com/kubernetes-sigs/metrics-server