Kubernetes HPA无法获取metrics报错且部署HPA后metrics-server崩溃问题
问题根因&解决方案
1. 直接报错原因:Deployment容器未全量配置CPU资源请求
你当前的bot-deployment中仅wallet容器配置了resources.requests.cpu字段,bot-api容器没有配置任何CPU/内存资源请求。
HPA计算CPU平均利用率时,需要以Pod内所有容器的CPU请求总和作为计算分母,只要有一个容器未配置CPU请求,就无法生成合法的利用率指标,直接触发no metrics returned from resource metrics API报错。
修复方法:给bot-api容器补充resources配置,示例如下:
containers: - name: bot-api image: gcr.io/<repo> ports: - containerPort: 5600 resources: # 补充该配置段 requests: cpu: 200m # 可根据实际业务负载调整 limits: cpu: 500m # 可根据实际业务负载调整 volumeMounts: - name: bot-volume mountPath: /core
2. 部署HPA后metrics-server崩溃的排查方向
先采集metrics-server的运行日志和状态,定位崩溃原因:
- 执行命令查看崩溃前的日志:
kubectl logs -n kube-system -l k8s-app=metrics-server --previous - 执行命令查看Pod事件:
kubectl describe pod -n kube-system -l k8s-app=metrics-server
常见触发原因及修复方案: - 资源不足OOM被杀:metrics-server本身的CPU/内存配额配置过低,HPA启动后持续拉取指标导致负载升高触发OOM,调高metrics-server的resources配置即可
- 版本不兼容:metrics-server版本与K8s集群版本不匹配,需确认对应版本适配关系,比如K8s 1.21+建议使用metrics-server v0.5+版本,1.19及以下建议使用v0.4.x版本
- APIService配置异常:执行
kubectl get apiservice v1beta1.metrics.k8s.io查看状态,如果STATUS不是Available,需要检查metrics-server的服务发现、证书配置是否正确
3. 修复后验证步骤
- 重新部署补充完resources配置的Deployment,确保Pod正常启动
- 先验证metrics-server基础能力,执行
kubectl top pods -n default确认能返回业务Pod的CPU/内存指标 - 重新部署HPA,执行
kubectl get hpa查看TARGET字段是否正常显示当前利用率/目标值,kubectl describe hpa bot-scaler确认无报错信息
内容的提问来源于stack exchange,提问作者CuriousPaul
相关产品推荐
相关产品推荐

