Azure AKS HPA无法获得cpu利用率

时间:2018-10-22 16:56:40

标签: azure kubernetes autoscaling azure-aks

我使用AKS在Azure中有一个单节点K8s群集。我使用简单的命令创建了部署和服务:

kubectl run php-apache --image=pilchard/hpa-example:latest --requests=cpu=200m,memory=300M --expose --port=80

并通过以下命令启用了HPA: kubectl autoscale deployment php-apache --cpu-percent=10 --min=1 --max=15

运行kubectl describe hpa php-apache后,我看到一条错误消息:

horizontal-pod-autoscaler  unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)

运行kubectl get hpa时,CPU指标未知。任何帮助将不胜感激。

我的AKS kube版本是v1.9.11

2 个答案:

答案 0 :(得分:2)

您至少需要安装heapster(已弃用)或metrics-server才能使用HPA

这提供了能够自动扩展的最少CPU和内存指标集。查看是否已安装的一种好方法是,如果从kubectl top pod得到这种输出:

$ kubectl top pod
NAME                        CPU(cores)   MEMORY(bytes)
http-svc-xxxxxxxxxx-xxxxx   1m           7Mi
myapp-pod                   0m           53Mi
sleep-xxxxxxxxxx-xxxxx      4m           27Mi

答案 1 :(得分:0)

如果您添加了指标服务器(最新询问默认情况下),请执行以下操作对其进行修复。

kubectl edit deployment applicationName

在上面的cmd中,将appliationName替换为应用程序的名称,如果您调用youre deploy.yml deploy,也将其替换,并在编辑模式下的“ terminationMessagePolicy”行之后添加以下内容。

              resource:
                 requests:
                   cpu: 50m
                 limits:
                   cpu: 500m

完成编辑后,按“ esc”键并输入:wq,您的更改将被保存,如果执行,几秒钟后

kubectl get hpa

kubectl describe hpa applicationName

您应该不会看到任何错误, 请注意根据您的应用程序使用情况更改cpu限制和请求,它们只是此处的示例值