Azure AKS HPA 无法获得 CPU 利用率

Posted

技术标签:

【中文标题】Azure AKS HPA 无法获得 CPU 利用率【英文标题】:Azure AKS HPA failed to get cpu utilization 【发布时间】:2019-03-26 19:38:23 【问题描述】:

我在 Azure 中有一个使用 AKS 的单节点 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

【问题讨论】:

我认为您需要在 aks 上运行 heapster 才能使其工作 【参考方案1】:

您至少需要安装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

【讨论】:

我已经通过kubectl apply -f metrics-server/deploy/1.8+/ 在我的集群上安装了metrics-server,但仍然遇到同样的错误。有什么想法吗? 当你发出kubectl top pod时你看到了什么? 我只看到 'php-apache' pod 您是否看到任何指标?与否 我尝试使用 Kubernetes 版本 1.10.8 并且成功了。不知道 AKS 上的新版本有什么问题。【参考方案2】:

如果您添加了 metrics-server(这是最新请求的默认设置),请执行以下修复它。

kubectl edit deployment applicationName

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

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

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

kubectl get hpa

kubectl describe hpa applicationName

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

【讨论】:

以上是关于Azure AKS HPA 无法获得 CPU 利用率的主要内容,如果未能解决你的问题,请参考以下文章

从 AKS 访问 Azure Blob 存储

k8s hpa无法获取cpu信息[关闭]

kubernetes hpa 无法获取 cpu 消耗

APIM 无法访问子网中的服务 (AKS)

无法通过 SSH 连接到 Azure 虚拟机

Kubernetes水平自动扩缩容Hpa-超详细文档