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": []
}
答案 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 dashboad
和minikube 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,它开始工作。.如果其他人遇到相同的问题,我在这里回答了自己的帖子:
答案 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