[AWS]EKS启动HPA,HPA指标<unknown>,报错:error: Metrics API not available

背景:在AWS上创建的EKS集群,想要对于deployment部署HPA,来autoscling副本数。

1.HPA一般基于CPU或者内存对副本数进行控制,所以必须需要Metrics Server。

(Metrics Server 是 Kubernetes 集群的一个关键组件,它负责收集和提供节点和 Pod 的资源使用数据)

如何查看集群有无:Metrics Server

复制代码
kubectl get deployment metrics-server -n kube-system #检查 Metrics Server 状态:

如果没有Metrics Server,使用kubectl top会报错:

error: Metrics API not available

下载部署Metrics Server:

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

2.部署HAP,yaml实例参考:

复制代码
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: "给hap取名字"
  namespace: "要部署到的命名空间"
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: "要控制的Deployment的名字"
  minReplicas: 2        #最小数
  maxReplicas: 8        #最大数
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70        #CPU 70%
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 80      #内存 80%

部署完成之后,使用命令:kubectl get hap -n 命名空间,就可以查看了。

报错:HPA指标<unknown>

这种情况是网上或者AI都会说得很复杂,七七八八的一大堆,其实原因很简单,就是你关联的deployment没有设置resource指标,只要在deployment.yaml中加上如下:

只需要requests字段就可以成功,不需要limit字段,重新部署之后可以看到<unknown>消失了。

不用尝试其他办法了,就是这个原因。

相关推荐
yyuuuzz4 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
文青小兵16 小时前
Linux云计算——docker compose haibor elfk (四)
linux·服务器·docker·云计算
文青小兵17 小时前
Linux云计算——docker部分技术、命令 (一)
linux·docker·云计算
文青小兵17 小时前
Linux云计算——docker 监控(五)
linux·docker·云计算·grafana·prometheus
文青小兵18 小时前
Linux云计算——docker镜像(三)
linux·docker·云计算
文青小兵19 小时前
Linux云计算——docker 网络和部分挂载(二)
linux·docker·云计算
AOwhisky19 小时前
Ceph系列第四期:Ceph块存储(RBD)精讲
linux·运维·笔记·ceph·云计算·rbd
代码N年归来仍是新手村成员2 天前
【AWS】Lambda 初识与服务部署
javascript·react.js·ai·node.js·云计算·ai编程·aws
小哈里2 天前
【K8S】云原生时代的GitOps最佳实践 —— ArgoCD
云原生·kubernetes·云计算·argocd·基础设施
wanhengidc2 天前
云手机 跨设备无缝衔接
运维·服务器·人工智能·智能手机·云计算