HPA no matches for kind Deployment in group 的问题

问题

hpa.yaml

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: pc-hpa
  namespace: dev
spec:
  minReplicas: 1  #最小pod数量
  maxReplicas: 10 #最大pod数量
  targetCPUUtilizationPercentage: 3 # CPU使用率指标,cpu使用达到3%
  scaleTargetRef:   # 指定要控制的nginx信息
    apiVersion:  /v1
    kind: Deployment
    name: nginx

在我创建了hpa之后,pod,server等都是正常启动,Metrics也正常安装了 kubectl top命令也是有效的,但是无法监控hpa控制器对应的cpu使用率

hpa日志

image-20220523100138953

现象

image-20220523095814605

排查

参考:

https://github.com/kubernetes-sigs/metrics-server/issues/389

看看github的说法

image-20220523095917968

真是一语点醒梦中人,之前我还以为我哪里yaml写的有问题,各种排查,这上面说的是,集权是由Metrics检测的,那为啥不看看控制器的管理日志呢,之前一直看pod,server,hpa的日志,找到hpa日志,以为发现问题所在,但是并没有找到解决办法,有的解决办法试了下也不行,这种就换个思路看看

查看controller-manager的pod的日志

# 查找pod
kubectl get pod -n kube-system

image-20220523101205032

# 查看日志
kubectl logs -n kube-system kube-controller-manager-master

Event(v1.ObjectReference{Kind:"HorizontalPodAutoscaler", Namespace:"dev", Name:"pc-hpa", UID:"3b1aa606-c29e-4cf7-9c8a-7d7b3888c988", APIVersion:"autoscaling/v2beta2", ResourceVersion:"884669", FieldPath:""}): type: 'Warning' reason: 'FailedGetScale' no matches for kind "Deployment" in group ""

image-20220523105038853

仔细看这个日志,我明明指定的是apiVersion: autoscaling/v1,为什么这日志上显示APIVersion:"autoscaling/v2beta2",看来这才是问题所在

查看是否是版本问题

关于这些版本的区别可以参考

https://www.cnblogs.com/alisystemsoftware/p/11236151.html

难道就是算是旧版底层使用的是最新版的?

把版本升一下试试

# 复制配置
cp pc-hpa.yaml pc-hpa2.yaml
# 修改配置 autoscaling/v1 ===》 autoscaling/v2beta2 , metadata.name 改为 pc-hpa2
vi pc-hpa2.yaml
# 创建一个
kubectl apply -f pc-hpa2.yaml

image-20220523110909149

提示创建失败,这也不行呀,难道是因为缺失这个版本?

最终原因

在我反复排查无果后,我左看看右看看出去点上了一根“快乐助手”,回来一看我好看犯了一个低级错误scaleTargetRef选项里好像漏了点啥,没错就是漏了apps,啊哈哈哈,修正后的yaml

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: pc-hpa
  namespace: dev
spec:
  minReplicas: 1  #最小pod数量
  maxReplicas: 10 #最大pod数量
  targetCPUUtilizationPercentage: 3 # CPU使用率指标,cpu使用达到3%
  scaleTargetRef:   # 指定要控制的nginx信息
    apiVersion:  apps/v1
    kind: Deployment
    name: nginx

查看最后结果

kubectl get hpa -n dev

image-20220523112540666

这次排查提醒我,要注意细节,还有就是如果你指定的版本不对,k8s会默认按照最新版本创建

posted @ 2022-05-23 11:27  makalo  阅读(252)  评论(0编辑  收藏  举报